Gagasan tantangan ini sederhana: buat bot untuk memainkan permainan kartu Euchre.
Bagi Anda yang belum mengenal mereka, saya telah menulis aturan untuk Euchre di sini karena mereka berkaitan dengan tantangan ini.
Saya sarankan menggunakan python atau sesuatu yang serupa, tetapi satu-satunya batasan nyata adalah itu harus kompatibel dengan kode pengontrol
Memasukkan:
Bot euchre Anda akan mendapatkan berbagai jenis input tergantung pada fase permainan atau putaran saat ini. Secara umum, Anda akan mendapatkan fase permainan pada baris pertama diikuti oleh koma dan jumlah poin yang dimiliki tim Anda, dan kemudian data yang relevan pada baris berikut.
Secara kronologis, bot Anda akan mendapatkan input dalam urutan berikut:
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
Keluaran:
Bot euchre Anda akan memiliki output yang berbeda tergantung pada fase permainan atau ronde saat ini.
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
Mencetak:
Skor bot Anda adalah jumlah total permainan yang dimenangkannya.
Bot Anda akan bermain melawan setiap bot lainnya, dan bot itu akan selalu bermitra dengan salinannya sendiri.
Catatan:
Inilah templat sederhana di 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)
Akan selalu ada 4 total tanggapan. Jika seseorang pergi sendiri, maka respons pasangannya akan "p" pada gilirannya.
Saya mencoba untuk mengurangi jumlah input yang berlebihan, sehingga menjadi sangat jelas:
2a. Posisi Anda relatif terhadap dealer / pemimpin dan kartu yang dimainkan pasangan Anda dapat ditentukan oleh jumlah output sebelumnya. Ada 1 pemain antara Anda dan pasangan. Di sana Misalnya, jika Anda mendapatkan "td, 8h, p" sebagai baris terakhir pada giliran Anda, Anda dapat melihat bahwa pasangan Anda memainkan 8 jam, dan tim lain memiliki pemain yang pergi sendiri.
Jika Anda penasaran, kesepakatan dilakukan dengan cara tradisional (dalam dua putaran paket bolak-balik 2 dan 3 kartu) tetapi itu tidak benar-benar relevan dengan bot Anda, jadi ...
Jika pemain kedua memutuskan untuk memesan di fase truf, fase itu akan berlanjut, tetapi output mereka akan diabaikan. Dengan kata lain, siapa pun yang memesan terlebih dahulu ada di tim Namers terlepas dari output lainnya.
Berikut ini adalah default untuk berbagai fase game. Jika Anda tidak menghasilkan respons yang valid untuk putaran itu, maka respons Anda diubah menjadi apa di bawah ini.
Ordering Trump: p
Naming Trump: p
Membuang: (kartu pertama di tangan Anda)
Going Alone: n
Giliran Anda: (kartu legal pertama di tangan Anda)
Inilah kode pengontrol untuk tujuan pengujian Anda.
6a. Perhatikan bahwa Anda dapat memasukkan 2 atau 4 nama bot, jika Anda memberikannya 4 bot maka mereka akan bermitra secara acak, dan dengan 2 mereka bermitra dengan salinan diri mereka sendiri.
6b. Anda memerlukan direktori 'bot' di direktori yang sama dengan kode controller, dan kode bot Anda harus ada di direktori bot.
Bagi mereka yang ingin bot mereka mengingat kartu apa yang dimainkan, Anda diberikan kesempatan selama fase "trik", yang memberi tahu bot Anda kartu mana yang dimainkan. Anda dapat menulis ke file di direktori bot asalkan file tersebut tidak melebihi 1kb.
Papan angka:
Old Stager: 2
Marius: 1
Random 8020: 0