BlackJack
Khi tôi có một vụ nổ làm việc với thử thách KOTH ban đầu, tôi muốn đến với một thử thách khác. Đối với tôi, niềm vui của những thử thách AI này là trong việc tinh chỉnh một bot tương đối đơn giản, chơi một trò chơi rất đơn giản một cách tinh tế. Do tính chất xác suất của trò chơi bài, tôi nghĩ rằng blackjack có thể là một trò chơi KOTH thú vị giống như TPD.
Tất cả các quy tắc được lấy từ mô tả của BlackJack với trang web này
Quy tắc về Thẻ & Bộ bài
- Bots chơi tại bàn của bốn (4) đối thủ cạnh tranh và một (1) đại lý
- Một (1) giày (một sàn được xáo trộn) được chia sẻ bởi tất cả người chơi và nhà cái cho đến khi nó cạn kiệt, tại thời điểm đó, một sàn được xáo trộn ngẫu nhiên mới sẽ được thêm vào và chơi sẽ tiếp tục. Các bot KHÔNG (hiện tại) KHÔNG ĐƯỢC THÔNG BÁO về việc bổ sung bộ bài mới này. Thông báo như vậy có thể được thêm vào nếu thiếu tính năng này gây ra đủ sự cố / rắc rối.
- Có 10 lượt mua mỗi vòng và thẻ miễn phí
- Bàn tay hoàn hảo / lý tưởng có số điểm 21
- Tất cả các thẻ mặt có giá trị 10
- Tất cả các thẻ số có giá trị số của họ
- Ách có giá trị 11 hoặc 1. điều này sẽ được xử lý tự động theo khung chứ không phải các bot.
- Theo quy định , tất cả các thẻ của người chơi được xử lý trực diện và có thể nhìn thấy. Một trong những thẻ của người giao dịch là úp và cái còn lại là úp.
Chấm điểm
- Điểm vượt quá 21 sử dụng ace vì 11 buộc ace giảm giá trị xuống 1
- điểm vượt quá 21 mà không thể bị ép buộc dưới ngưỡng 21 "phá sản" bot
Các đại lý
- Nhà cái rút thăm cho đến khi anh ta bán thân, hoặc bị phạt 17 điểm, tại đó anh ta buộc phải đứng
Cá cược và khoai tây chiên
- Khi bắt đầu mỗi vòng, một lần mua 10 được tính phí, do đó, tỷ lệ cược tối thiểu là 10 và đặt cược tối thiểu là 1. LƯU Ý - đặt cược là giá trị tuyệt đối của đối số đặt cược, vì vậy đừng bận tâm cố gắng đặt cược tiêu cực.
- Các lô không đủ khả năng mua đã bị xóa khỏi cuộc thi
- Khi đặt cược, bot không thể đặt cược nhiều hơn số chip họ có
- Nếu đặt cược là có thể, đặt cược chip sẽ được loại bỏ hoàn toàn khỏi bot và thêm vào tiền cược
- Chiến thắng một cược đặt cược cho bot 2 lần đặt cược. Tuy nhiên vì đặt cược bị trừ khỏi chip của bot, bot hòa vốn và sau đó thắng cược 1 lần.
- Bots thắng cược chỉ khi điểm của họ lớn hơn điểm của nhà cái
Phân tích trò chơi
Một tay
- Khi trò chơi bắt đầu, mỗi người chơi được lặp lại một thẻ và có phí mua 10 đô la / tiền cược tối thiểu được trừ vào chip của họ.
- Các đại lý rút thăm
- Một đường chuyền thứ hai được thực hiện, và một thẻ khác được xử lý cho tất cả người chơi.
- Các đại lý rút thăm
- Sau đó (theo thứ tự như đã được xử lý), mỗi bot được thực thi như được mô tả trong phần "Giao diện của lập trình viên" và phải thực hiện di chuyển hoặc đứng. Đặt cược được coi là một động thái. LƯU Ý R BETNG B BETNG CHỨNG KHÔNG CÓ ẢNH HƯỞNG ĐẾN KHẢ NĂNG CỦA BOTS ĐỂ KIẾM ĐƯỢC NHIỀU PHIM. Rất có thể đặt cược và sau đó rút một thẻ, và có thể rút nhiều thẻ và họ đặt cược trước khi đứng.
- Khi tất cả các bot đã bị vỡ hoặc đứng, đại lý chơi đến ngưỡng 17
- Điểm số của các bot sau đó được so sánh với các đại lý, cược được thắng và thua
Một vòng
Được coi là tạo thành năm (5) tay. Ở giữa hai bàn tay, danh sách các thí sinh được sắp xếp để loại bỏ người chơi và sau đó được xử lý thêm để đảm bảo rằng tất cả các bot chơi cùng số tay (một điều khoản cho thực tế là số lượng mục sẽ không chia đều giữa các bảng bốn bot ).
Giao diện lập trình và di chuyển hợp pháp
Như tài liệu trong tệp CardShark:
# DOCUMENTATION
# INPUT SPECIFICATION
# $ ./foo.bar <hand-score> <hand> <visible cards> <stake> <chips>
# <hand-score> is the present integer value of the player's hand.
# <hand> is a space-free string of the characters [1-9],A,J,Q,K
# <visible cards> every dealt card on the table. when new shoes are brought
# into play, cards drawn therefrom are simply added to this list
# NOTE: the first TWO (2) cards in this list belong to the dealer.
# one however will be "hidden" by a "#". the other is visible.
# !!! THE LIST IS CLEARED AT THE END OF HANDS, NOT SHOES !!!
# <stake> the number of chips which the bot has bet this hand
# <chips> the number of chips which the bot has
# SAMPLE INPUT
# $ ./foo.bar 21 KJA KQKJA3592A 25 145
#
# OUTPUT SPECIFICATION
# "H"|"S"|"D"|"B" (no quotes in output)
# "H" HIT - deal a card
# "S" STAND - the dealer's turn
# "D" DOUBLEDOWN - double the bet, take one card. FIRST MOVE ONLY
# "B 15" BET - raises the bot's stakes by $15.
Như (bây giờ) được ghi lại trong tệp Thẻ:
# class CARD
# card is a container for representing paper playing cards in
# otherwise fairly functional programming.
# letter()
# gets the letter used to identify the card in a string
# LETTER MAPPINGS
# Ace : 'A'
# Two : '2'
# Three : '3'
# Four : '4'
# Five : '5'
# Six : '6'
# Seven : '7'
# Eight : '8'
# Nine : '9'
# Ten : 'T'
# Jack : 'J'
# Queen : 'Q'
# King : 'K'
# "Hidden": '#'
Mã nguồn cho hệ thống tính điểm là TẠI ĐÂY
Bots mẫu
Lim 17
#!/usr/bin/env python
import sys
s = sys.argv
if int(s[1]) < 17:
print "H"
else:
print "S"
Ngôn ngữ nhập cảnh
Hiện tại, Java, c / c ++, Python và Lisp được hỗ trợ. Một nỗ lực hợp lý sẽ được thực hiện để bao gồm các bài nộp bằng các ngôn ngữ khác, nhưng hãy nhớ rằng cuộc thi cuối cùng sẽ được tổ chức trên một hộp Linux.
Lựa chọn người chiến thắng
Người chiến thắng sẽ là tác giả của bot liên tục tích lũy được nhiều chip nhất qua số lượng bảng và vòng được xác định. Người chiến thắng sẽ được công bố vào ngày 3 tháng 6, nhưng thông báo có thể bị trì hoãn nếu vẫn có bài nộp. Cuộc thi kéo dài vô tận.