BlackJack
Orijinal KOTH meydan okumasında bir patlama yaptığım için başka bir tane daha bulmak istedim. Benim için, bu AI zorluklarının eğlencesi, çok basit bir oyunu ustaca oynayan nispeten basit bir botu rafine etmektir. Kart oyunlarının olasılıklı doğası nedeniyle, blackjack'in tıpkı TPD gibi ilginç bir KOTH oyunu olabileceğini düşünüyorum.
Tüm kurallar bu web sitesinin ayakkabı ile BlackJack açıklamasından türetilmiştir
Kartlar ve Desteyle İlgili Kurallar
- Botlar dört (4) rakibin ve bir (1) bayinin masalarında oynuyor
- Bir (1) ayakkabı (karıştırılmış güverte) bitene kadar tüm oyuncular ve dağıtıcı tarafından paylaşılır , bu noktada yeni rastgele karıştırılmış bir güverte eklenir ve oyun devam eder. Botlar (şu anda) bu yeni destenin eklenmesiyle ilgili DEĞİLDİR. Bu özelliğin eksikliği yeterli sıkıntıya / soruna neden oluyorsa bu bildirim eklenebilir.
- Tur başına 10 buy-in var ve kartlar ücretsiz
- Mükemmel / ideal elin puanı 21
- Tüm yüz kartlarının değeri 10
- Tüm sayısal kartlar sayılarına değer
- Aslar 11 veya 1 değerindedir. Bu, botlar tarafından değil, çerçeve tarafından otomatik olarak ele alınacaktır.
- Gereğince kurallara , bütün oyuncuların kartları yüz kadar ele ve görünür olan. Krupiyenin kartlarından biri kapalı, diğeri açıktır.
puanlama
- Ası 11 olarak kullanan 21'den fazla puanlar ası 1'e düşürmeye zorlar
- bot "21 büstü" eşiğinin altında zorlanamayan 21 aşan puanlar
Satıcı
- Krupiye, yumruk atıncaya kadar çeker veya ayakta durmaya zorlandığı 17 puan alır.
Bahis ve Cips
- Her turun başında, bir satın-10 yüzden minimum değer, şarj hissesini 10 ve minimum bahis 1'in NOT - bahis böylece rahatsız etmeyin, bahis argümanının mutlak değeridir negatif bahisleri denemek.
- Katılım ücretini karşılayamayan botlar yarışmadan çıkarılır
- Bahis yaparken, botlar sahip oldukları fişlerden daha fazla bahis yapamazlar
- Bahis mümkünse, fiş bahsi hemen bottan kaldırılır ve bahis miktarına eklenir
- Bir bahis kazanmak bot 2x fişlerine bahse girer. Ancak bahis botun fişlerinden çıkarıldığı için, bot eşit olarak kırılır ve daha sonra bahsi 1 kat kazanır.
- Botlar, yalnızca puanı dağıtıcının skorundan daha yüksekse bahis kazanır
Oynanış Dağılımı
Bir el
- Oyun başladığında, her oyuncuya tekrarlı olarak bir kart dağıtılır ve fişlerinden çıkarılan 10 $ 'lık katılım ücreti / minimum bahsi vardır.
- Krupiye berabere
- İkinci bir geçiş yapılır ve tüm oyunculara başka bir kart dağıtılır.
- Krupiye berabere
- Daha sonra (ele alındıkları sırayla) her bot "Programcı Arayüzü" bölümünde açıklandığı gibi yürütülür ve bir hamle veya stand yapmalıdır . Bahis bir hamle olarak kabul edilir. BAHİSLERİN BOTLARIN DAHA FAZLA HAREKET YAPMASINDAN YETENEĞİNİ ETKİ ETMEDİĞİNİ NOT. Bahis yapmak ve daha sonra bir kart çekmek çok mümkündür ve ayakta durmadan önce birden fazla kart çekmek ve bahis oynamak mümkündür.
- Tüm botlar patladığında veya durduğunda, krupiye 17 eşiğine oynar
- Botların skorları daha sonra krupiyenin skorlarıyla karşılaştırılır, bahisler kazanılır ve kaybedilir
Tek raund
Beş (5) el olduğu düşünülmektedir. Eller arasında, yarışmacılar listesi oyuncuları kaldırmak için sıralanır ve daha sonra tüm botların aynı sayıda el oynamasını sağlamak için daha fazla işlenir (giriş sayısının dört bot tabloları arasında eşit olarak ayrılmaması için bir hüküm) ).
Programcı Arayüzü ve Yasal Hareketler
CardShark dosyasında belgelendiği gibi:
# 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.
Kartlar dosyasında (şimdi) belgelendiği gibi:
# 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": '#'
Puanlama sistemi için kaynak kodu BURADA
Örnek Botlar
Lim 17
#!/usr/bin/env python
import sys
s = sys.argv
if int(s[1]) < 17:
print "H"
else:
print "S"
Giriş Dilleri
Şu anda Java, c / c ++, Python ve Lisp desteklenmektedir. Diğer dillerdeki gönderileri dahil etmek için makul bir çaba gösterilecektir, ancak son yarışmanın bir Linux kutusunda gerçekleştirileceğini unutmayın.
Kazanan Seçimi
Kazanan, henüz belirlenmemiş sayıda masa ve mermi üzerine sürekli olarak en fazla fiş tahakkuk eden botun yazarı olacaktır. Kazanan 3 Haziran'da duyurulacak, ancak hala gönderimler devam ederse duyuru ertelenebilir. Yarışma süresiz olarak uzatıldı.