sheesh, đây thực sự là thứ 4? Đối với tất cả những người cũ của bạn, thách thức cốt lõi là như nhau, nhưng chúng tôi đang sử dụng Java thay vì ngôn ngữ tùy chỉnh. Dưới đây là ba thử thách CodeBot trước đây , trong trường hợp bạn quan tâm.
Mục tiêu của CodeBots là làm cho bot của bạn càng lan truyền càng tốt . Mỗi bot mang một Cờ và bạn cần đảm bảo rằng Cờ của bạn ở khắp mọi nơi .
API
Bots sẽ tuân theo một "giao thức" được tiêu chuẩn hóa và các bot tiến hành thông qua các bước sau một cách đồng bộ:
IPAddress selectMessageRecipient()
cho phép bot chọn người mà anh ta muốn gửi tin nhắn "thân thiện" tới.Message sendMessage()
cho phép một bot chọn nội dung của tin nhắn mà anh ta sẽ gửi.processMessage(IPAddress, Message)
được gọi cho mỗi tin nhắn mà bot nhận được.FunctionType selectFunctionToBlock()
chặn chức năng bị ghi đè cho lượt hiện tại. Xem bước 7.IPAddress selectAttackTarget()
cho phép một bot chọn người mà anh ta muốn DDOS. Một cuộc tấn công DDOS thành công nếu bot được nhắm mục tiêu bởi 3 bot cùng một lúc. Nếu một cuộc tấn công thành công, thì mỗi kẻ tấn công có thể thực hiện bước 6 và 7.readData(ReadonlyBot)
cho phép một bot đọc dữ liệu được lưu trữ trên bot dễ bị tổn thương.FunctionType selectFunctionToReplace()
là mấu chốt của thử thách này . Bạn được phép chọn 1 chức năng (trong số 8 chức năng được liệt kê ở đây) để sao chép từ bot của bạn sang bot của họ. Sau đó, chức năng của bạn sẽ được gọi thay vì của họ . Nếu nhiều bot chọn cùng một chức năng, một ngẫu nhiên sẽ thành công.String getFlag()
được gọi vào cuối trò chơi và sẽ trả về một chuỗi duy nhất cho trình của bạn. Hàm của bạn sẽ luôn trả về cùng một chuỗi. Bài nộp có nhiều cờ nhất vào cuối trò chơi sẽ thắng.
Lưu trữ
Bạn có 3 hình thức lưu trữ, một Sổ địa chỉ , Nhật ký và Biến . Các hình thức lưu trữ này là cục bộ cho bot mà chức năng của bạn đang chạy (vì vậy nếu chức năng của bạn được sao chép, nội dung của từng đối tượng này sẽ khác nhau). Tất cả các đối tượng này có thể được sửa đổi hoặc xóa bằng tay. Để có được các đối tượng này, bạn có một getter trong lớp của bạn (ví dụ getLog()
).
Các AddressBook lưu trữ một danh sách các IPAddress , mỗi một AddressType , cho phép bạn phân loại các loại khác nhau của địa chỉ. Sổ địa chỉ sẽ luôn chứa ít nhất 1 địa chỉ (nếu nó bị xóa, một địa chỉ ngẫu nhiên sẽ được thêm vào). Xóa sổ địa chỉ của bạn để có được nhiều IPAddresses không được phép.
Các Log lưu trữ một danh sách của tất cả các hành động được thực hiện, cũng như dữ liệu về hành động. Nó cũng bao gồm lịch sử của tất cả các cuộc tấn công thành công (mặc dù bạn không biết chúng ghi đè chức năng nào)
Các biến đối tượng cho phép bạn lưu trữ các biến chuỗi gắn liền với một tên chuỗi. Khi bắt đầu trò chơi, Biến sẽ chứa một biến duy nhất ID
chứa ID được tạo ngẫu nhiên duy nhất cho loại bot của bạn.
Bạn cũng có các chức năng truy cập khác:
int getTurnNumber()
trả về một số nguyên với lượt hiện tạibool functionsMatch(ReadonlyBot, FunctionType)
kiểm tra xem chức năng của ReadonlyBot có khớp với chức năng của bạn khôngIPAddress personalAddress()
trả về địa chỉ IPA của bạn
Cách thực hiện
- Bạn có thể lấy mã từ Github
- Thêm bot của bạn vào
\bots
thư mục, sau đó thêm một tham chiếu đến bot của bạn trongcontroller\CodeBotFactory.java
- Bot của bạn phải mở rộng
codebots.bot.CodeBot
hoặccodebots.bots.DefaultCodeBot
- Bạn cần Java 8 nếu bạn muốn chạy bộ điều khiển.
- Bạn có thể chạy mã (giả sử bạn đang ở trong
/src
thư mục) bằng cách sử dụngjavac codebots\*.java
để biên dịch, sau đójava codebots.Main
chạy. - Bạn có thể không có bất kỳ biến thành viên không cố định nào trong lớp của bạn
- Phản xạ không được phép.
- Các hình thức giao tiếp giữa các bot (cùng loại hoặc khác loại) bên ngoài các phương pháp được liệt kê ở trên không được phép.
- Các bot câm và / hoặc Suicidal được cho phép, nhưng tất cả các bot nên có chức năng khác với các mục hiện có.
- Nếu bạn muốn sự ngẫu nhiên trong bot của bạn, hãy sử dụng
getRandom()
- Hãy cố gắng để giữ cho mã của bạn hiệu quả. Tôi đã dành rất nhiều thời gian để lập hồ sơ và làm cho bộ điều khiển nhanh.
Điểm số
105,2501 Expelliarmus!
104,5804 Tôi đang giúp!
104,2746 Tôi là ai?
103,8529 Bot Dumb
103.2028 Người thay thế
102,7045 Chaos
102,4046 Hermit Bot
102.2849 Swarmer
100.5598 Bot ngẫu nhiên yêu bạn
99.966 Tin tưởng vào niềm tin!
99,0185 codebots.bots.DefaultCodeBot
91,2942 codebots.bots.MarkedBot
91.1423 Chỉ cần robot giao hàng thư thân thiện của bạn.
89,4645 null