Bu meydan okuma fikri basittir: Euchre kart oyunu oynamak için bir bot oluşturun.
Onları henüz bilmeyenler için, bu meydan okuma ile ilgili oldukları için burada Euchre kurallarını yazdım .
Python veya benzeri bir şey kullanmanızı öneririm, ancak tek gerçek kısıtlama, denetleyici koduyla uyumlu olması gerektiğidir
Giriş:
Euchre botunuz, oyunun veya turun mevcut aşamasına bağlı olarak farklı giriş türleri alacaktır. Genel olarak, ilk aşamada oyun aşamasını, ardından virgül ve takımınızın sahip olduğu puan sayısını ve ardından aşağıdaki satırlardaki ilgili verileri alırsınız.
Kronolojik olarak, botunuz aşağıdaki sırayla girdi alır:
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
Çıktı:
Euchre botunuz, oyunun veya turun mevcut aşamasına bağlı olarak farklı çıkışlara sahip olacaktır.
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
puanlama:
Botunuzun puanı kazandığı toplam oyun sayısıdır.
Botunuz diğer botlara karşı oynayacak ve her zaman kendi kopyasıyla ortak olacaktır.
Notlar:
İşte python2.7'de basit bir şablon:
#!/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)
Her zaman toplam 4 yanıt olacaktır. Birisi yalnız giderse, eşinin yanıtı "p" olur.
Fazladan net olmak için gereksiz girdi miktarını azaltmaya çalıştım:
2a. Hem krupiyeye / lidere göre pozisyonunuz hem de partnerinizin oynadığı kart önceki çıktıların sayısına göre belirlenebilir. Eşinizle aranızda 1 oyuncu var. Orada Örneğin, sıranızda son satır olarak "td, 8h, p" alırsanız, eşinizin 8 saat oynadığını ve diğer takımın yalnız giden bir oyuncusu olduğunu görebilirsiniz.
Merak ediyorsanız, anlaşma geleneksel bir şekilde yapılır (2 turda 2 ve 3 kartlık alternatif paketler halinde), ancak bu botunuzla gerçekten ilgili değil, bu yüzden ...
İkinci oyuncu koz aşamasında sipariş vermeye karar verirse, bu aşama devam eder, ancak çıkışları hemen hemen göz ardı edilir. Başka bir deyişle, ilk sipariş veren her kim olursa olsun Namers ekibindedir.
Çeşitli oyun aşamaları için varsayılanlar aşağıdadır. Bu tur için geçerli bir yanıt vermezseniz, yanıtınız aşağıda verilenle değiştirilir.
Sipariş Trump: p
Adlandırma Trump: p
Atma: (elinizdeki ilk kart)
Yalnız Olmak: n
Sıranız: (elinizdeki ilk yasal kart)
İşte test amaçlı kontrolör kodu.
6a. Dikkat edin 2 veya 4 bot isimlerini geçebilirsiniz, eğer 4 bot verirseniz, rastgele bir şekilde ortak olurlar ve 2 ile kendilerinin kopyaları ile ortak olurlar.
6b. Denetleyici koduyla aynı dizinde bir 'botlar' dizinine ihtiyacınız var ve bot kodunuzun botlar dizininde olması gerekir.
Botlarının hangi kartların oynandığını hatırlamasını isteyenler için, "hile" aşamasında size hangi kartların oynandığını söyleyen fırsat verilir. Bu dosya 1 kb'yi aşmadığı sürece bot dizinindeki bir dosyaya yazabilirsiniz.
scoreboard:
Old Stager: 2
Marius: 1
Random 8020: 0