- của khủng hoảng và tử đạo
(đó là phụ đề vì phụ đề rất tuyệt)
Trong thử thách vua đồi này trong python (yup; bạn không cần phải đi xa hơn để biết bạn có thể không gửi java), bạn cần tạo một bot chơi một trò chơi rất giống với chào mừng đến ngục tối
Luật chơi
(lưu ý rằng đây không phải là trò chơi gốc)
Có một bộ bài, một bộ vật phẩm, và một số thẻ phần thưởng và thẻ tử thần. HP cơ bản là 3. Bộ bài gồm 13 lá bài quái vật được đánh số 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 9
để biểu thị sức mạnh của chúng.
Danh sách vật phẩm
Hiệp ước quỷ: Đánh bại yêu quái (sức mạnh 7 quái vật) và quái vật bên dưới nó trên đống ngục tối. - (chỉ cần đánh bại con quỷ nếu con quỷ là người cuối cùng trong ngục tối)
Thuốc bổ máu: Khi bạn rơi xuống 0 HP, đánh bại quái vật và trở về 3 HP.
Chén thánh: Đánh bại quái vật có sức mạnh số chẵn (trong trò chơi, đây là những xác sống). Nếu một quái vật được đánh số chẵn xuất hiện sau khi hiệp ước ma quỷ được sử dụng, hành động đó trước tiên và bạn sẽ không bị giết thêm hiệp ước sau con quái vật này.
Dao găm Vorpal: Chọn một quái vật trước khi vào ngục tối; loại quái vật này bị đánh bại. Nếu quái vật được nhắm mục tiêu xảy ra sau khi hiệp ước ma quỷ được sử dụng, hành động đó trước tiên và bạn sẽ không bị giết thêm hiệp ước sau con quái vật này.
Khiên: Thêm 3 vào tổng HP trước khi chơi game. Điều này không ảnh hưởng đến việc sử dụng thuốc trong sức khỏe, nó sẽ luôn trả lại sức khỏe cho 3.
Giáp: Thêm 5 vào tổng HP trước khi chơi game. Điều này không ảnh hưởng đến việc sử dụng thuốc trong sức khỏe, nó sẽ luôn trả lại sức khỏe cho 3.
Thẻ phần thưởng được sử dụng để theo dõi những người đã thành công trong ngục tối. Thẻ tử thần theo dõi những người đã thất bại trong ngục tối.
Vẽ giai đoạn
Trước khi giai đoạn vẽ bắt đầu, tất cả các thẻ bài quái vật được đưa trở lại bộ bài, cả hai người chơi được khôi phục lại 3 HP và tất cả các vật phẩm bị loại bỏ được khôi phục sao cho có một thẻ.
Người chơi đầu tiên quyết định có rút thẻ từ bộ bài hay không, giấu nó khỏi người chơi khác. Nếu vậy, họ phải chọn đặt nó lên trên cùng của đống ngục tối hoặc loại bỏ nó cùng với một vật phẩm mà họ lựa chọn. Các vật phẩm và thẻ bị loại bỏ sẽ không có sẵn cho bất kỳ người chơi nào cho đến vòng tiếp theo.
Sau khi người chơi thay phiên nhau, người chơi thứ hai cũng làm như vậy. Người chơi thay phiên nhau quyết định rút và làm gì với thẻ đã rút, cho đến khi ai đó quyết định không rút hoặc người chơi lấy lá bài cuối cùng từ bộ bài. Nếu một người chơi quyết định không rút hoặc rút lá bài cuối cùng, giai đoạn vẽ kết thúc và người chơi khác bây giờ phải vào ngục tối và bắt đầu chơi trò chơi.
Giai đoạn phát triển
Nếu dao găm Vorpal chưa bị loại bỏ, người chơi trò chơi bây giờ phải quyết định áp dụng thẻ nào. Không có quyết định tích cực nào được đưa ra cho phần còn lại của giai đoạn này.
Người chơi đầu tiên lấy thẻ hàng đầu; đó là lá bài cuối cùng được đặt trong ngục tối và xem số sức mạnh của nó. Nếu hiệp ước ma quỷ được kích hoạt từ lượt trước, thẻ rút ra sẽ bị loại bỏ. Nếu không, các vật phẩm của người chơi sẽ được kiểm tra theo thứ tự 'hiệp ước ma quỷ', 'chén thánh', 'dao găm Vorpal'. Vật phẩm đầu tiên không bị loại bỏ có khả năng đánh bại thẻ đã rút sẽ được sử dụng và thẻ bị loại bỏ. Nếu hiệp ước ma quỷ được sử dụng, bây giờ nó sẽ hoạt động cho thẻ tiếp theo. Các mặt hàng được sử dụng không được loại bỏ.
Nếu không có vật phẩm áp dụng có sẵn, sức mạnh của thẻ sẽ bị trừ khỏi sức khỏe của người chơi. Nếu sức khỏe của họ không còn tích cực, họ sẽ được phục hồi lên 3 HP và thuốc sẽ bị loại bỏ nếu có, nếu không thì hầm ngục kết thúc và họ lấy thẻ tử thần.
Trong khi người chơi không bị đánh bại và vẫn còn những lá bài trong ngục tối, quá trình rút lá bài trên cùng được lặp lại. Khi đánh bại thành công tất cả các thẻ trong ngục tối, việc thu thập thông tin kết thúc và người chơi chơi trò chơi thu thập một thẻ phần thưởng.
Mô tả trò chơi đầy đủ
Một trò chơi bao gồm một loạt các vòng, mỗi vòng có một pha vẽ và sau đó là một pha chơi trò chơi. Vào cuối mỗi vòng, một người chơi sẽ thu được thẻ tử thần hoặc thẻ phần thưởng; một khi người chơi tích lũy được 5 trong số các loại trò chơi kết thúc. Nếu họ có 5 thẻ tử thần, họ sẽ thua trò chơi. Nếu họ có 5 thẻ thưởng, họ sẽ thắng. Dù bằng cách nào, người chơi khác nhận được kết quả ngược lại. Nếu không có người chơi nào có 5 thẻ loại một, thì chơi tiến tới vòng tiếp theo và người chơi thứ hai ở vòng trước sẽ đi trước và ngược lại.
Chi tiết
Mỗi bot sẽ chơi 400 trò chơi với mọi bot khác theo các quy tắc được mô tả ở trên. Bot nào là người chơi một (và cứ thế đi trước trong vòng đầu tiên) xen kẽ mỗi trò chơi và tất cả trạng thái được đặt lại giữa các trò chơi.
Đây là các mục một lần nữa:
Hiệp ước quỷ: Đánh bại yêu quái (sức mạnh 7 quái vật) và quái vật bên dưới nó trên đống ngục tối. - (chỉ cần đánh bại con quỷ nếu con quỷ là người cuối cùng trong ngục tối)
Thuốc bổ máu: Khi bạn rơi xuống 0 HP, đánh bại quái vật và trở về 3 HP.
Chén thánh: Đánh bại quái vật có sức mạnh số chẵn (trong trò chơi, đây là những xác sống). Nếu một quái vật được đánh số chẵn xuất hiện sau khi hiệp ước ma quỷ được sử dụng, hành động đó trước tiên và bạn sẽ không bị giết thêm hiệp ước sau con quái vật này.
Dao găm Vorpal: Chọn một quái vật trước khi vào ngục tối; loại quái vật này bị đánh bại. Nếu quái vật được nhắm mục tiêu xảy ra sau khi hiệp ước ma quỷ được sử dụng, hành động đó trước tiên và bạn sẽ không bị giết thêm hiệp ước sau con quái vật này.
Khiên: Thêm 3 vào tổng HP trước khi chơi game. Điều này không ảnh hưởng đến việc sử dụng thuốc trong sức khỏe, nó sẽ luôn trả lại sức khỏe cho 3.
Giáp: Thêm 5 vào tổng HP trước khi chơi game. Điều này không ảnh hưởng đến việc sử dụng thuốc trong sức khỏe, nó sẽ luôn trả lại sức khỏe cho 3.
và bộ bài : 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 9
.
Bạn phải triển khai một lớp bot không sử dụng các biến lớp, xuất phát từ lớp cơ sở sau:
class BasePlayer:
def start_turn(self, last_turn):
raise NotImplementedError
def play(self, card):
raise NotImplementedError
def vorpal_choice(self, last_turn):
raise NotImplementedError
def result(self, bot, result, dungeon, vorped):
raise NotImplementedError
Lớp cơ sở này hiển thị các phương thức mà lớp của bạn cần thực hiện và số lượng đối số được thực hiện bởi mỗi phương thức.
Phương pháp mô tả đối số
last_turn
trongvorpal_choice
vàstart_turn
là một số nguyên hoặc một giá trị Không có. Giá trị từ 0 đến 5 chỉ ra rằng kẻ thù đã loại bỏ thẻ đã rút cùng với vật phẩm được chỉ định bởi giá trị đó (xem danh sách các vật phẩm ở trên). Giá trị 6 chỉ ra rằng kẻ thù đã đặt thẻ vào ngục tối. Giá trị Không chỉ ra rằng bot đang chơi đầu tiên trong vòng này (không thể thực hiện đượcvorpal_choice
). Trongvorpal_choice
last_turn có khả năng là 7, chỉ ra rằng họ đã vượt qua lượt đó. Tình huống duy nhất không phải là 7 là khi kẻ địch rút được lá bài cuối cùng.card
là một con số đại diện cho sức mạnh của một trong những lá bài từ bộ bài như được liệt kê ở trên.
Bây giờ, các đối số result
phức tạp hơn một chút:
bot
cho biết bot đã vào ngục tối. 0 chỉ ra vào ngục tối và 1 chỉ ra rằng kẻ thù đã vào ngục tối.result
chỉ ra sự thành công của chuyến đi. Sai cho thấy bot chơi game đã thành công, trong khi True cho thấy họ thất bại.dungeon
là một danh sách các thẻ / ints đại diện cho các thẻ trong ngục tối. Hầm ngục được sắp xếp theo thứ tự được đặt; thẻ đầu tiên được đặt trong ngục tối là đầu tiên trong danh sách, và thẻ cuối cùng được đặt ở cuối. Bạn sẽ không nhận được bất kỳ thông tin nào về thẻ bị loại bỏ; họ là bí mật từ các bot khác.vorped
là một số nguyên đại diện chovorpal_choice
thực hiện bởi bot chơi game. Nếubot==0
, bạn đã biết điều này, nhưng nếubot==1
, đây có thể là thông tin hữu ích.
Tôi sẽ thành thật, tôi hoàn toàn không nhớ tại sao tôi lại giành được kết quả Sai, nhưng tôi nghĩ đó là một ý tưởng tốt vào thời điểm đó.
Giá trị trả về
start_turn
: Trả về 1 để rút thẻ hoặc 0 để vượt qua.play
: Trả về 0 đến 5 để loại bỏ vật phẩm tương ứng và thẻ đã rút hoặc 6 để đặt thẻ vào ngục tối (phù hợp với đầu vào last_turn, ngoại trừ việc vượt qua, được thực hiện trong start_turn).vorpal_choice
: Trả về số lượng thẻ bạn muốn loại bỏ bằng dao găm Vorpal (1 để loại bỏ 1s, 5 để loại bỏ 5s). Chọn một thẻ không tồn tại sẽ giết chết bạn (8 là bất hợp pháp, 10 là bất hợp pháp, 0 là bất hợp pháp).result
: Bạn có thể trả lại bất cứ điều gì, vì đây là chức năng thông báo để cập nhật dữ liệu của bot.
Bạn có thể kiểm tra bộ điều khiển ở đây
Làm rõ thêm hoặc chỉ lặp lại một số chi tiết nhỏ mà bạn có thể đã bỏ qua và có thể muốn biết nhanh chóng:
Bots chơi 400 trò chơi với nhau bot.
Không có biến lớp
Không nhắm mục tiêu các bot cụ thể khác
Không chống đỡ các bot khác
Không có những thứ phản ánh như sửa đổi mô-đun ngẫu nhiên hoặc các bot khác.
Tối đa 6 bot (mỗi người), trừ khi rõ ràng là tất cả các bot đều có giá trị bao gồm trong KOTH (nhưng vẫn có thể không tạo ra một loạt các bot vui lòng)
Không có thời gian kết thúc cụ thể cho KOTH này, ngoại trừ kết thúc tiền thưởng cho những gì có giá trị. Chỉ cần cố gắng để giành chiến thắng mỗi lần.
Kết quả cho đến nay (xin lỗi vì khá lười biếng với những người này: P)
1 GrailThief 2732 0.98
2 Steve 2399 0.86
3 DevilWorshipper 1854 0.66
4 RunAway 1336 0.48
5 BoringPlayer 1190 0.42
6 SlapAndFlap 783 0.28
7 DareDevilDumDum 750 0.27
8 RandomMandom 156 0.06
Grailthief "đánh cắp" tiền thưởng. không thực sự, bởi vì nó kiếm được nó. Làm tốt lắm, Sleafar!
2. place the item in the dungeon. The item goes in the dungeon (duh)
dường như là một lỗi đánh máy; không có một vật phẩm nào được đề cập tại thời điểm đó (bạn vừa rút một lá bài từ bộ bài quái vật). Các quy tắc có lẽ nên được làm rõ một chút.
or any information known only to one player.
tôi không rõ nữa à? ngục tối chỉ được tiết lộ ở cuối, vì vậy các thẻ được vẽ bởi bot chỉ được biết đến với một bot. như một phần thưởng, thẻ bị loại bỏ không được tiết lộ bao giờ. nếu bạn nghĩ rằng "ồ thì có một chiến lược tốt nhất có thể xảy ra", dự đoán của đối thủ vẫn rất quan trọng vì vậy điều này cũng không hợp lệ