แนวคิดของความท้าทายนี้ง่ายมาก: สร้างบอทเพื่อเล่นการ์ดเกมไพ่ยูเครอ
สำหรับบรรดาของคุณที่ยังไม่รู้จักพวกเขาฉันได้เขียนกฎให้กับ Euchre ที่นี่เนื่องจากพวกเขาเกี่ยวข้องกับความท้าทายนี้
ฉันแนะนำให้ใช้ python หรือบางอย่างที่คล้ายกัน แต่ข้อ จำกัด จริง ๆ เท่านั้นคือมันต้องเข้ากันได้กับโค้ดคอนโทรลเลอร์
การป้อนข้อมูล:
บอทยูแคร์ของคุณจะได้รับการป้อนข้อมูลที่แตกต่างกันขึ้นอยู่กับเฟสปัจจุบันของเกมหรือรอบ โดยทั่วไปแล้วคุณจะได้รับช่วงของเกมในบรรทัดแรกตามด้วยเครื่องหมายจุลภาคและจำนวนคะแนนที่ทีมของคุณมีแล้วข้อมูลที่เกี่ยวข้องในบรรทัดต่อไปนี้
ตามลำดับบอทของคุณจะได้รับการป้อนข้อมูลตามลำดับต่อไปนี้:
Ordering Trump:
js,ah,qc,ts,jc // the cards in your hand
2 // number of points your team has
0 // number of tricks your team has taken
ordering // the phase of the game
th // the turned up card
p,p // each previous player’s decision
Naming Trump:
js,ah,qc,ts,jc // the cards in your hand
2 // number of points your team has
0 // number of tricks your team has taken
naming // the phase of the game
p // each previous player’s decision
Dealer Discarding:
js,ah,qc,ts,jc // the cards in your hand
2 // number of points your team has
0 // number of tricks your team has taken
discard // the phase of the game
th // the card you will pick up
Going alone:
js,ah,qc,ts,jc // the cards in your hand
2 // number of points your team has
0 // number of tricks your team has taken
alone // the phase of the game
h // the trump suit
n,n // each previous player’s decision
Your turn:
js,ah,qc,ts,jc // the cards in your hand
2 // number of points your team has
0 // number of tricks your team has taken
turn // the phase of the game
h // the trump suit
td,8h,p // each previous player’s card
Trick data:
// the cards in your hand (none, since this happens at the end of a trick)
2 // number of points your team has
1 // number of tricks your team has taken
trick // the phase of the game
0 // the index of the following list that is your card
js,tc,4d,js // the cards played during the trick in the order they were played
เอาท์พุท:
บอทไพ่ยูเครอของคุณจะมีเอาท์พุตต่างกันขึ้นอยู่กับเฟสปัจจุบันของเกมหรือรอบ
Ordering Trump:
p //for pass
OR
o //for order up
Naming Trump:
p //for pass
OR ANY OF
c,s,h,d //the suit you want to name
Going alone:
n // no
OR
y // yes
Your turn:
js //the card you want to play
เกณฑ์การให้คะแนน:
คะแนนบอทของคุณคือจำนวนเกมทั้งหมดที่ชนะ
บอทของคุณจะเล่นกับบอทอื่น ๆ และมันจะถูกจับคู่กับสำเนาของตัวเองเสมอ
หมายเหตุ:
นี่คือเทมเพลตง่ายๆใน python2.7:
#!/usr/bin/python2.7
import sys
data = sys.stdin.readlines()
hand = data[0].strip().split(',') # Hand as a list of strings
points = int(data[1]) # Number of points
tricks = int(data[2]) # Number of tricks
out = ''
if data[3] == 'ordering':
card = data[4] # The upturn card
prev = data[5].strip().split(',') # The previous player's decisions as a list
# Ordering logic
out = # 'o' or 'p'
elif data[3] == 'naming':
prev = data[4].strip().split(',') # The previous player's decisions as a list
# Naming logic
out = # 'p', 'h', 's', 'c', or 'd'
elif data[3] == 'discard':
card = data[4] # The card you'll take
# Discarding logic
out = # The card you want to discard
elif data[3] == 'alone':
trump = data[4] # The trump suit
prev = data[5].strip().split(',') # The previous player's decisions as a list
# Alone logic
out = # 'y' for yes, 'n' for no
elif data[3] == 'turn':
trump = data[4] # The trump suit
prev = data[5].strip().split(',')
# Turn logic
out = # The card you want to play
elif data[3] == 'trick':
trump = data[5]
cards = data[6].strip().split(',')
my_card = cards[int(data[4])]
# Data logic
print(out)
จะมีคำตอบทั้งหมด 4 คำตอบเสมอ หากมีคนไปคนเดียวการตอบสนองของพันธมิตรจะเป็น "p" เมื่อถึงคราว
ฉันพยายามลดปริมาณการป้อนข้อมูลซ้ำซ้อนเพื่อให้ชัดเจนยิ่งขึ้น:
2a ทั้งตำแหน่งของคุณที่สัมพันธ์กับดีลเลอร์ / ผู้นำและการ์ดที่คู่ของคุณเล่นสามารถกำหนดได้จากจำนวนเอาท์พุทก่อนหน้า มีผู้เล่น 1 คนระหว่างคุณกับคู่ของคุณ ตัวอย่างเช่นหากคุณได้รับ "td, 8h, p" เป็นบรรทัดสุดท้ายในตาคุณคุณจะเห็นว่าคู่ของคุณเล่นเป็นเวลา 8 ชั่วโมงและทีมอื่นมีผู้เล่นคนเดียว
หากคุณอยากรู้อยากเห็นการจัดการจะทำในลักษณะดั้งเดิม (ในสองรอบสลับแพ็คเก็ตของ 2 และ 3 ใบ) แต่นั่นไม่เกี่ยวข้องกับบอทของคุณดังนั้น ...
หากผู้เล่นคนที่สองตัดสินใจที่จะสั่งซื้อในช่วงทรัมป์ช่วงนั้นจะดำเนินต่อไป แต่ผลลัพธ์ของพวกเขาจะถูกละเว้น กล่าวอีกนัยหนึ่งผู้ใดก็ตามที่สั่งซื้ออันดับแรกคือทีม Namers โดยไม่คำนึงถึงผลลัพธ์อื่นใด
ต่อไปนี้เป็นค่าเริ่มต้นสำหรับเฟสเกมต่างๆ หากคุณไม่ส่งออกการตอบสนองที่ถูกต้องสำหรับรอบนั้นการตอบสนองของคุณจะถูกเปลี่ยนเป็นสิ่งที่ด้านล่าง
การสั่งซื้อทรัมป์: p
การตั้งชื่อทรัมป์: p
การทิ้ง: (ไพ่ใบแรกในมือของคุณ)
ไปคนเดียว: n
Your Turn: (การ์ดใบแรกในมือของคุณ)
นี่คือรหัสคอนโทรลเลอร์สำหรับจุดประสงค์ในการทดสอบของคุณ
6a โปรดสังเกตว่าคุณสามารถส่งชื่อบอท 2 หรือ 4 ชื่อหากคุณให้บอท 4 บอทพวกเขาจะได้รับการสุ่มและ 2 คนจะได้รับสำเนาของตัวเอง
6b คุณต้องการไดเรกทอรี 'bots' ในไดเรกทอรีเดียวกันกับรหัสควบคุมและรหัส bot ของคุณต้องอยู่ในไดเรกทอรี bots
สำหรับผู้ที่ต้องการบอทของพวกเขาที่จะจำสิ่งที่เล่นไพ่คุณจะได้รับโอกาสในช่วง "เคล็ดลับ" ซึ่งบอกบอทของคุณที่เล่นไพ่ คุณสามารถเขียนไปยังไฟล์ในไดเรกทอรีบอทตราบเท่าที่ไฟล์นั้นไม่เกิน 1kb
สกอร์:
Old Stager: 2
Marius: 1
Random 8020: 0