Thử thách này đã kết thúc. Để xem điểm số cuối cùng của các đối thủ, bấm vào đây
Trong thử thách này, mỗi bài nộp là một bot. Mỗi bot phải là một chức năng Javascript. Bots sẽ chiến đấu để có được tổng giá trị vàng cao nhất. Vàng có thể được nuôi, hoặc kiếm được từ việc giết các bot khác, và được sử dụng để nâng cấp chữa bệnh, tấn công, che chắn và canh tác.
Mục tiêu:
Qua một số vòng chứa tới 1000 lượt (kết thúc khi chỉ còn một bot), bot có tổng giá trị cao nhất (tổng số vàng thu được) là người chiến thắng.
Biến:
Trong mỗi lượt, mỗi bot còn sống (> 0 HP) sẽ được chạy một lần. Nó có thể trả về một nước đi, có thể là một trong những điều sau đây:
- Chữa lành: Lấy lại HP
- Tấn công: Loại bỏ HP khỏi bot khác
- Khiên: Bảo vệ chống lại các cuộc tấn công sau này
- Stun: Bỏ qua lượt tiếp theo của bot
- Trang trại: Kiếm vàng với chi phí HP
- Nâng cấp: Thực hiện một số di chuyển tốt hơn
Tất cả các bot sẽ quay trở lại di chuyển của chúng trước khi bất kỳ được thực hiện, do đó, làm choáng, hồi máu, tấn công, che chắn, v.v. sẽ không ảnh hưởng đến bất kỳ bot nào di chuyển sau đó trong lượt đó. Ví dụ: nếu Bot A làm choáng Bot B và Bot B đứng sau Bot A theo thứ tự lần lượt, Bot B vẫn sẽ di chuyển sau đó trong lượt đó và tình trạng choáng sẽ xảy ra ở lượt tiếp theo.
Chiến đấu, canh tác và nâng cấp:
Mỗi bot có HP tối đa là 100 và UID được chỉ định trong khoảng từ 0 đến 99. UID này thay đổi sau mỗi vòng và là cách các bot theo dõi lẫn nhau.
Chữa bệnh là một trong những động tác đơn giản nhất, thêm một lượng HP được xác định theo cấp độ của nó (bắt đầu từ 5 HP). Một bot không thể chữa lành quá 100 HP.
Tấn công bot bằng UID của nó là một động thái khả thi khác, với sát thương cơ bản là 5 HP ở cấp độ 0. Bots cũng có thể bị choáng, bỏ qua lượt tiếp theo của chúng, cũng sử dụng UID.
Bots có thêm lá chắn HP, không có giới hạn. Tấm khiên HP này sẽ hấp thụ sát thương từ các cuộc tấn công trực tiếp từ các bot khác, và được thêm vào bằng cách che chắn. Ở cấp độ 0, che chắn thêm 5 khiên HP.
Nuôi trồng sẽ kiếm được 5 vàng ở cấp 0, với chi phí là 2 HP. 2 HP này không thể được bảo vệ. Việc sử dụng duy nhất cho vàng (ngoài chiến thắng) là nâng cấp di chuyển. Chữa bệnh, tấn công và che chắn có giá trị cơ bản là 5 HP và bắt đầu nuôi ở mức 5 vàng. Mỗi bước di chuyển có các cấp độ riêng biệt, bắt đầu từ 0. Các công thức này sẽ xác định giá trị tính bằng HP hoặc vàng của một lần di chuyển, trong đó L là cấp độ:
- Chữa bệnh:
L + 5
- Tấn công:
1.25L + 5
- Che chắn:
1.5L + 5
- Nông nghiệp:
2L + 5
Chi phí nâng cấp bất kỳ di chuyển nào là như nhau cho một cấp độ nhất định và được xác định bởi 2.5L² + 2.5L + 10
, trong đó L là cấp độ hiện tại. Một bot có thể sử dụng chức năng cost(currentLevel)
như một phím tắt để xác định điều này.
Bots bắt đầu với 25 vàng, cho phép họ nhanh chóng nâng cấp hai bước lên cấp 1 hoặc một lần chuyển lên cấp 2. Vàng bắt đầu này không được tính vào tổng giá trị bot. Giết một con bot mang lại cho bạn một nửa tổng giá trị vàng, làm tròn và nếu hai con bot giết một con khác trong cùng một lượt, cả hai đều nhận được phần thưởng.
Đầu ra đầu vào:
Để giao tiếp với bộ điều khiển, giá trị trả về của hàm được sử dụng để gửi thông tin di chuyển. Một trong những điều này nên được trả lại:
- Chữa lành:
heal()
- Tấn công:
attack(uid)
- Cái khiên:
shield()
- Choáng
stun(uid)
- Nông trại:
farm()
- Nâng cấp:
upgrade("heal" / "attack" / "shield" / "farm")
Để bỏ qua một lượt (không làm gì), không trả lại gì hoặc trả về giá trị giả.
Để lấy số lần lượt hiện tại (bắt đầu từ 1), hãy sử dụng turn()
.
Các đối số của chức năng của bạn sẽ bao gồm thông tin về bot của bạn, UID của các bot khác và lưu trữ giữa các lượt. Đối số đầu tiên là một đối tượng với các thuộc tính sau: uid
, hp
, gold
, và shield
. Đây là bản sao thông tin hiện tại của bot của bạn. Ngoài ra còn có một đối tượng lồng nhau levels
, với những con số mức độ heal
, attack
, shield
, và farm
.
Đối số thứ hai là một mảng được xáo trộn của tất cả các bot còn sống không phải của bạn, được định dạng như một đối tượng có chứa các thuộc tính uid
, hp
(cộng với khiên) worth
và attack
(mức độ tấn công). Đối số thứ ba là một đối tượng trống có thể được sử dụng để lưu trữ giữa các lượt.
Ví dụ Bots:
Bot này sẽ farm cho đến khi nó có thể nâng cấp đòn tấn công của mình lên cấp 5, sau đó tấn công bot ngẫu nhiên mỗi lượt cho đến khi nó chết (hoặc thắng). Không hiệu quả lắm do thiếu khả năng hồi máu / che chắn.
function freeTestBotA(me, others, storage) {
if (me.levels.attack < 5) {
if (me.gold < cost(me.levels.attack))
return farm();
return upgrade("attack");
}
return attack(others[0].uid);
}
Bot này có hai chế độ: tấn công và phòng thủ. Nó sẽ làm choáng một bot ngẫu nhiên hoặc hồi máu khi ở chế độ phòng thủ, và nó sẽ tấn công hoặc che chắn khi ở chế độ tấn công. Nó sẽ cố gắng nâng cấp các cuộc tấn công của nó bất cứ khi nào có thể.
function freeTestBotB(me, others, storage) {
if (me.gold >= cost(me.levels.attack))
return upgrade("attack");
if (me.hp < 50)
if (Math.random() < 0.5)
return stun(others[0].uid);
else
return heal();
else
if (Math.random() < 0.5)
return attack(others[0].uid);
else
return shield();
}
Quy tắc:
- Lỗ hổng tiêu chuẩn bị cấm
- Các bot không được đọc, sửa đổi hoặc thêm bất kỳ biến nào ngoài phạm vi của chúng, có thể không cố gắng gian lận và không thể gọi bất kỳ hàm DOM do bộ điều khiển xác định
- Giá trị trả về phải là giả, hoặc một trong các đầu ra chức năng trên
- Bots không nên được thiết kế để nhắm mục tiêu một bot cụ thể, nhưng có thể được thiết kế để tận dụng các chiến lược chung
- Bots có thể không tự tấn công (được phát hiện do nhận xét của @Ness)
- Các bot phải đủ khác biệt so với bất kỳ bot nào khác mà chúng có thể được coi là các mục riêng biệt
- Lập nhóm bây giờ không được phép
- Bộ điều khiển có thể được tìm thấy ở đây
- Phòng chat
Gỡ lỗi bộ điều khiển mới:
Sử dụng tệp gold-battle-log.js
, bạn có thể đặt giá trị thuộc debug
tính của bot botData
thành 0 (không ghi nhật ký), 1 (di chuyển nhật ký) hoặc 2 (di chuyển nhật ký, hp, vàng, cấp độ, v.v.)
Thử thách kết thúc lúc 1700 UTC vào thứ Sáu, ngày 9 tháng 8
[closed]
cuối cùng có khả năng khiến những người xem bình thường bỏ qua việc đọc thử thách của tôi vì họ cho rằng đó là chất lượng thấp hoặc lạc đề.