กระบอง
ในขณะที่ฉันทำงานหนักกับ KOTH ดั้งเดิมฉันจึงอยากลองทำเกมอื่น สำหรับฉันแล้วความสนุกของความท้าทาย AI เหล่านี้คือการปรับแต่งบอทที่ค่อนข้างเรียบง่ายซึ่งเล่นเกมอย่างง่าย ๆ อย่างละเอียด เนื่องจากลักษณะความน่าจะเป็นของเกมไพ่ฉันคิดว่าแบล็คแจ็คอาจเป็นเกม KOTH ที่น่าสนใจเหมือนกับ TPD
กฎทั้งหมดมาจากคำอธิบายของเว็บไซต์ BlackJack พร้อมรองเท้า
กฎระเบียบเกี่ยวกับไพ่และสำรับ
- บอทเล่นที่โต๊ะของผู้แข่งขันสี่ (4) คนและหนึ่ง (1) เจ้ามือ
- ผู้เล่นทุกคนและตัวแทนจำหน่ายจนกว่าจะหมดรองเท้า (หนึ่ง) (ไพ่สำรับแบบสับไพ่) จนกว่าผู้เล่นนั้นจะหมดท่าตรงจุดนี้จะมีการเพิ่มสำรับแบบสุ่มแบบสุ่มใหม่และการเล่นจะดำเนินต่อไป บอทจะไม่ได้รับการแจ้งจากการเพิ่มเด็คใหม่นี้ การแจ้งเตือนดังกล่าวอาจถูกเพิ่มหากไม่มีคุณสมบัตินี้ทำให้เกิดความทุกข์ / ปัญหาอย่างเพียงพอ
- มีการบายอินจำนวน 10 ครั้งต่อรอบและบัตรฟรี
- มือที่สมบูรณ์แบบ / อุดมคติมีคะแนน 21
- การ์ดใบหน้าทั้งหมดมีค่า 10
- การ์ดตัวเลขทั้งหมดมีค่าหมายเลขของพวกเขา
- เอซมีค่า 11 หรือ 1 ซึ่งจะจัดการโดยอัตโนมัติโดยกรอบไม่ใช่บอท
- ตามกฎแล้วไพ่ของผู้เล่นทุกคนจะหงายหน้าและมองเห็นได้ ไพ่ใบหนึ่งของเจ้ามือคว่ำหน้าลงและไพ่อีกใบหงายหน้า
เกณฑ์การให้คะแนน
- คะแนนเกิน 21 ซึ่งใช้เอซเป็น 11 บังคับให้เอซลดค่าเป็น 1
- คะแนนเกิน 21 ซึ่งไม่สามารถบีบบังคับต่ำกว่าเกณฑ์ 21 "bust" บอท
ตัวแทนจำหน่าย
- ดีลเลอร์จะจับจนกว่าเขาจะได้คะแนนหรือเกินระดับ 17 คะแนนจากจุดที่เขาถูกบังคับให้ยืน
การเดิมพันและชิป
- ในช่วงเริ่มต้นของแต่ละรอบจะมีการเรียกเก็บเงินบายอินจาก 10 ดังนั้นจึงมีเงินเดิมพันขั้นต่ำ10 และเดิมพันขั้นต่ำ1 หมายเหตุ - การเดิมพันเป็นค่าสัมบูรณ์ของการโต้แย้งการเดิมพันดังนั้นไม่ต้องกังวล ลองเดิมพันเชิงลบ
- บอทที่ไม่สามารถซื้อได้จะถูกลบออกจากการแข่งขัน
- เมื่อทำการเดิมพันบอตจะไม่สามารถเดิมพันได้มากกว่าชิปที่มี
- หากการเดิมพันเป็นไปได้การเดิมพันชิปจะถูกลบออกจากบอทและเพิ่มลงในเงินเดิมพัน
- การชนะการเดิมพันจะทำให้การเดิมพันของชิป 2x อย่างไรก็ตามเนื่องจากการเดิมพันนั้นถูกหักออกจากชิปของบอทบอทจึงทำการหักและชนะการเดิมพัน 1x
- บอทชนะการเดิมพันเฉพาะในกรณีที่คะแนนของพวกเขามากกว่าของดีลเลอร์
รายละเอียดการเล่นเกม
มือเดียว
- เมื่อเกมเริ่มต้นผู้เล่นแต่ละคนจะมีการแจกไพ่ซ้ำ ๆ กันหนึ่งใบและมีค่าธรรมเนียมการซื้อ $ 10 / การเดิมพันขั้นต่ำหักออกจากชิปของพวกเขา
- ตัวแทนจำหน่ายดึง
- ทำบัตรรอบที่สองและแจกการ์ดอีกใบให้ผู้เล่นทุกคน
- ตัวแทนจำหน่ายดึง
- จากนั้น (ในลำดับเดียวกับที่พวกเขาจัดการ) บอทแต่ละตัวจะถูกดำเนินการตามที่อธิบายไว้ในส่วน "ส่วนต่อประสานของโปรแกรมเมอร์" และต้องย้ายหรือยืน การเดิมพันถือเป็นการย้าย โปรดทราบว่าการพนันไม่ได้ส่งผลกระทบต่อความสามารถของบอทในการสร้างการเคลื่อนไหวที่มากขึ้น มันเป็นไปได้มากที่จะวางเดิมพันแล้วจั่วไพ่และเป็นไปได้ที่จะจั่วไพ่หลายใบและวางเดิมพันก่อนยืน
- เมื่อบอททั้งหมดถูกจับหรือยืนดีลเลอร์จะเล่นจนถึงระดับ 17
- คะแนนของบอทนั้นจะถูกเปรียบเทียบกับของดีลเลอร์การเดิมพันจะชนะและแพ้
หนึ่งรอบ
ถือว่าเป็นมือห้า (5) มือ ในระหว่างมือรายการของผู้เข้าแข่งขันจะถูกจัดเรียงเพื่อลบผู้เล่นและดำเนินการต่อเพื่อให้แน่ใจว่าบอททั้งหมดเล่นด้วยจำนวนมือที่เท่ากัน )
ส่วนต่อประสานโปรแกรมเมอร์และการเคลื่อนไหวทางกฎหมาย
ตามที่ระบุไว้ในไฟล์ 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.
เป็น (ตอนนี้) ที่บันทึกไว้ในไฟล์การ์ด:
# 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": '#'
ซอร์สโค้ดสำหรับระบบการให้คะแนนอยู่ที่นี่
บอทตัวอย่าง
Lim 17
#!/usr/bin/env python
import sys
s = sys.argv
if int(s[1]) < 17:
print "H"
else:
print "S"
รายการภาษา
ปัจจุบันรองรับ Java, c / c ++, Python และ Lisp จะมีความพยายามที่สมเหตุสมผลในการรวมการส่งเป็นภาษาอื่น ๆ แต่โปรดจำไว้ว่าการแข่งขันรอบสุดท้ายจะดำเนินการในกล่อง Linux
การคัดเลือกผู้ชนะ
ผู้ชนะจะเป็นผู้เขียน ธ ปท. ซึ่งมีการสะสมชิปมากที่สุดอย่างต่อเนื่องตามจำนวนโต๊ะและรอบที่กำหนด ผู้ชนะจะได้รับการประกาศในวันที่ 3 มิถุนายน แต่การประกาศอาจล่าช้าหากยังมีการส่งผลงานเข้ามา การประกวดขยายไปเรื่อย ๆ