Chào mừng bạn đến với Mã Bots 2!
Bạn đã học được bài học của mình kể từ Bots Code cuối cùng. Bạn đã cố gắng tìm ra nhiều cách hơn để phù hợp với nhiều hành động hơn trong ít dòng hơn và cuối cùng bạn đã có nó. Bạn sẽ tạo một Bot Bot hướng sự kiện.
Bot của bạn phải bao gồm 24 dòng. Mỗi dòng theo một trong hai định dạng:
Condition:Action
hoặc là
Action
Bot của bạn cũng có đủ dung lượng để lưu trữ 5 số nguyên có tên A
thông qua E
. Một số nguyên có thể lưu trữ các giá trị từ 0 đến 23.
Mỗi lượt, bạn sẽ thực hiện dòng C
, trừ khi một trong các điều kiện là đúng. Nếu vậy, thì sau đó C
sẽ chứa số dòng của điều kiện là đúng, và sau đó dòng đó sẽ được thực thi. Vào cuối mỗi lượt, C
sẽ được tăng lên.
Có các điều kiện có sẵn:
Start
chỉ đúng trong lượt đầu tiên. Bạn phải có mã này chính xác một lầnBotAt(N)
là đúng nếu có một bot tại vị trí được xác định bởi NEquals(A,B)
là đúng nếu A bằng B. Chúng có thể là các loại khác nhau, nếu vậy, chúng sẽ không bằng nhau.Modified(A)
là đúng nếuA
được sao chép trong lượt cuối cùng.A
phải là một tên biến, một dòng hoặc một điều kiệnAny(C1,C2,...)
là đúng nếu bất kỳ điều kiện nào là đúngNone(C1,C2,...)
là đúng nếu không có điều kiện nào đúngAll(C1,C2,...)
là đúng nếu tất cả các điều kiện là đúngNot(C)
đúng nếu C sai.C
phải là một điều kiện.
Các biến có thể ở một trong các định dạng sau. 9 đầu tiên là số và có thể được sử dụng cho bất cứ khi nào N được sử dụng trong trang này.
A
,B
,C
,D
,E
- Một số từ 0 đến 23
This
sẽ trả về số dòng hiện tạiAdd(N1,N2,...)
sẽ trả về tổng của tất cả các giá trịSub(N1,N2)
sẽ trả về N1 trừ N2Mult(N1,N2,...)
sẽ trả lại sản phẩm của tất cả các giá trịDiv(N1,N2)
sẽ trả về N1 chia cho N2Mod(N1,N2)
sẽ trả về N1 mod N2OVar(N)
sẽ chấp nhận một tên biến và sẽ trả về biến của đối thủLine(N)
sẽ trả về dòng thứ N trong mã của bạnType(N)
sẽ trả về loại dòng thứ N trong mã của bạn (các loại là tên của các hành động)Cond(N)
sẽ trả lại điều kiện trên dòng thứ NCondType(N)
sẽ trả về loại điều kiện trên dòng thứ N (các loại là tên của các điều kiện)OLine(N)
sẽ trả về dòng thứ N trong mã của đối thủ của bạnOType(N)
sẽ trả về loại dòng thứ N trong mã của đối thủ của bạnOCond(N)
sẽ trả lại điều kiện trên dòng thứ NOCondType(N)
sẽ trả về loại điều kiện trên dòng thứ N
A
và B
dành cho sử dụng cá nhân của bạn, C
được sử dụng để xác định dòng nào sẽ thực thi trong mã của bạn và D
được sử dụng làm hướng. Mỗi giá trị D
đề cập đến một cặp vuông và hướng khác nhau. E
tạo ra một giá trị ngẫu nhiên mỗi lần. D
và E
sẽ được khởi tạo thành một giá trị ngẫu nhiên, nếu không 0
.
Hướng sử dụng sẽ là [North,East,South,West][D%4]
. Đối thủ của bạn là bot trong quảng trường ngay lập tức theo hướng đó.
Có 4 hành động dành cho bạn:
Move
sẽ di chuyển bạn 1 hình vuông về phía trướcD
theo hướng thứ. Nếu có bot ở đó, bạn sẽ không di chuyển.Copy(A,B)
sẽ sao chép biếnA
vàoB
.B
không thể là một giá trị số, ngoại trừ một tên biến.A
vàB
không thể có nhiều loại khác nhau. Sao chép một dòng không sao chép điều kiện.Flag
Không lam gi cả. Bot có nhiều cờ nhất trong mã của bạn sẽ nhận được điểm. Bot có nhiều điểm nhất sẽ thắng.If(C,L1,L2)
sẽ thực hiện dòng trênL1
nếuC
đúng, khác thực hiệnL2
.C
là một điều kiện,L1
vàL2
phải là dòng.
Bức tranh lớn
50 bản sao của mỗi bot sẽ được đặt trên thế giới. Mục tiêu của bạn là đưa cờ của bạn vào càng nhiều bot càng tốt. Đối với mỗi bot có nhiều loại cờ của bạn hơn bất kỳ loại cờ nào khác, bạn sẽ nhận được một điểm.
Các bot sẽ được đặt như sau:
B...B...B...B...
..B...B...B...B.
B...B...B...B...
Sẽ có 10 trò chơi được chạy và điểm sẽ được tính trung bình trên tất cả các trò chơi, xác định ai là người chiến thắng.
Ghi chú bên
Nếu nhiều điều kiện được áp dụng, thì điều kiện tiếp theo ngay lập tức Start
sẽ được thực thi
Các bot sẽ được đóng gói chặt chẽ nhưng bạn sẽ không bắt đầu một bot khác. (Về mặt kỹ thuật, nó sẽ có cùng định dạng với CodeBots cuối cùng)
Vì thử thách này không được đăng trong hộp cát (để không cho ai có lợi thế), tôi bảo lưu quyền thay đổi các chi tiết nhỏ cho công bằng hoặc các khả năng bổ sung. Ngoài ra, nếu có lỗi trong trình chạy CodeBots, tôi sẽ thay đổi nó, ngay cả khi một bot phụ thuộc vào lỗi đó để thành công. Tôi đang cố gắng công bằng nhất có thể.
If
Báo cáo đệ quy sẽ không được thực thi
Nếu bot của bạn ngắn hơn 24 dòng, các dòng còn lại sẽ được lấp đầy Flag
Hãy nhớ khi sao chép vào chính bạn C
, đó C
là tăng vào cuối lượt của bạn.
Trình thông dịch CodeBots có thể được tìm thấy ở đây . Nó bao gồm một tập tin .jar để thực hiện dễ dàng. Chỉ cần thêm bot của bạn vào thư mục bot
Điểm số
- 893.9
- 1.3 Lười biếng
- 0,9 Hậu vệ
- 0,5 Flagger
- 0,4 CliqueBot
- 0,4 ngấm ngầm
- 0,3 kẻ tấn công
- 0,3
- 0,3 Mục tiêu đơn
- 0,2 FreeBot
- 0,2 Sentinel
- 0,2 ổ
- 0,0 Chống độc
- Di chuyển 0,0
- 0,0 CliqueBorg
- Máy tính 0,0
- 0,0 TestBot
- Kẻ bắt chước 0,0
CẬP NHẬT
Các dòng mã hiện được xoay khi bạn xem mã của đối thủ. Điều đó có nghĩa là, dòng 1 của đối thủ của bạn có thể là dòng 14 (hoặc bất kỳ dòng nào). Một bot sẽ có một phần bù cố định sẽ bù các dòng của anh ta theo X
số lượng khi được đối thủ xem . Biến của đối thủ C
cũng sẽ được bù bằng X
số tiền tương tự . X
sẽ không thay đổi trong cùng một trò chơi, nhưng nó sẽ thay đổi từ trò chơi này sang trò chơi khác.