Gomoku veya Arka arkaya Beş, siyah ve beyaz taşlarla ızgarada iki oyuncu tarafından oynanan bir masa oyunudur . Kim arka arkaya 5 taşı koyabilirse (yatay, dikey veya çapraz) oyunu kazanır.
kurallar
Bu KoTH'de Swap2 kuralını oynayacağız, yani bir oyun iki aşamadan oluşuyor: İlk aşamada iki oyuncu kimin ilk gittiğini / kimin siyah oynadığını belirler, daha sonra oyuncu ile başlayan her turda bir taş yerleştirecekler siyahı seçti.
İlk aşama
Oyuncular A & B olsun ve A oyunu açacaktır:
- Bir gemide siyah iki ve bir beyaz taş yerleştirir
- B aşağıdaki üç hareketten birini seçebilir:
- B oyuncusu siyah oynamaya karar verir: başlangıç aşaması bitti
- Oyuncu B beyaz bir taş koymaya karar verir ve beyaz oynar: ilk aşama bitti
- Oyuncu B bir siyah ve bir beyaz taş oynamaya karar verir: A rengi seçer
Oyun aşaması
Siyah oynar çalar, bu orada oyun için artık serbest alanlardır (bu durumda bu bir kravat) ya da bir oyuncu oynamak için yönetir kadar gider ile başlayan gemide onların renk, her oyuncu yerleri tek taş a taşları (bu durumda oyuncu kazanır).
Bir sıra yatay, dikey veya diyagonal anlamına gelir. Kazanmak bir kazanımdır - oyuncunun birden fazla sıra atmayı başarabilmesi önemli değildir.
KoTH oyun kuralları
- her oyuncu birbirlerine karşı iki kez oynar:
- başlangıçta kimin önce gittiğine rastgele karar verilecek
- sonraki oyunda en son oynayan oyuncu ilk önce
- bir kazanma 2 puan, bir kravat 1 ve bir kayıp 0
- amaç mümkün olduğunca çok puan almak
Botunuz
Bu zorluğun olabildiğince çok dil için erişilebilir olmasını sağlamak için giriş / çıkış stdin / stdout (satır tabanlı) aracılığıyla olacaktır . Hakim programı, botunuzun stdin'ine bir satır yazdırarak programınızı yönlendirir ve botunuz stdout'a bir satır yazdırır .
Bir EXIT
mesaj aldıktan sonra , hakimin işlemi öldürmesi için dosyalara yazmayı bitirmeniz için yarım saniye verilecektir.
Rastgelelik
Turnuvaları doğrulanabilir kılmak için yargıç tohumlanmış randomizasyon kullanır ve botunuz da aynı nedenle yapmalıdır. Bot, kullanması gereken komut satırı argümanı ile bir tohum verilecek, lütfen bir sonraki bölüme bakın.
Argümanlar
Bot, iki komut satırı argümanı alır:
- rakibin adı
- rastgelelik için tohum
Kullanıcı durumu
Programınız her oyun için her zaman yeni başlatılacağından, saklamak istediğiniz bilgileri saklamak için dosyaları kullanmanız gerekir. Geçerli dizininizde herhangi bir dosyayı okuyabilir / yazabilir veya alt klasörler oluşturabilir / kaldırabilirsiniz. Herhangi bir üst dizindeki herhangi bir dosyaya erişim izniniz yok!
Giriş / Çıkış formatı
BOARD
((X,Y),COLOR)
X
Y
COLOR
"B"
"W"
SP
XY
(X,Y)
|
İlk aşamada üç farklı mesaj türü vardır:
Prompt (judge) -> Answer (bot)
"A" SP "[]" -> XY XY XY
"B" SP BOARD -> "B" | "W" SP XY | XY XY
"C" SP BOARD -> "B" | "W"
- İlk mesaj üç tuple ister, ilk ikisi siyah taşların pozisyonları, üçüncüsü ise beyaz taşların pozisyonları olacaktır.
- İkinci mesaj şunlardan birini ister:
"B"
-> siyah seç"W" SP XY
-> beyazı seç ve üzerine beyaz bir taş koyXY
XY XY
-> iki taş yerleştirin (ilk siyah ve ikinci beyaz)
- Sonuncusu sadece hangi rengi oynamak istediğinizi sorar
Bundan sonra normal oyun başlayacak ve mesajlar çok daha basit olacak
N BOARD -> XY
N
XY
Bir cevap beklemeyen bir ek mesaj var
"EXIT" SP NAME | "EXIT TIE"
NAME
kazanılan botun adı nerede . Oyun kazanan kimse ve taş yerleştirmek için daha fazla boş alan olmadığı için oyun sona ererse, ikinci mesaj gönderilecektir (bu, botunuzun adlandırılamayacağı anlamına gelir TIE
).
Biçimlendirme
Bottan gelen mesajların herhangi bir boşluk olmadan kodu çözülebileceğinden, tüm boşluklar yok sayılır (örn. (0 , 0) (0,12)
İle aynı şekilde işlenir (0,0)(0,12)
). Hâkimden gelen mesajlar sadece farklı bölümleri ayırmak için bir boşluk içerir (yani yukarıda belirtildiği gibi SP
) ve boşluklar üzerinde çizgiyi bölmenize izin verir.
Herhangi bir geçersiz yanıt, o turun kaybedilmesine neden olur (yine de bir EXIT
mesaj alırsınız), kurallara bakın.
Misal
İşte gerçek mesajlara bazı örnekler:
A []
B [((0,0),"B"),((0,1),"W"),((14,14),"B")]
1 [((0,0),"B"),((0,1),"W"),((1,0),"B"),((1,1),"W"),((14,14),"B")]
Hakim
Sen yargıç programını bulabilirsiniz burada : basitçe yeni bir klasör oluşturmak için bir bot eklemek için bots
, klasörün orada dosyalarınızı yerleştirmek ve bir dosya eklemek meta
içeren ad , komutu , argümanlar ve bir bayrak 0/1 (etkin / devre dışı stderr'yi ) her ayrı bir satırda.
Bir turnuva yapmak için koşun ./gomoku
ve tek bir bot koşusunda hata ayıklayın ./gomoku -d BOT
.
Not: Hakimi nasıl kuracağınız ve kullanacağınız hakkında daha fazla bilgiyi Github deposunda bulabilirsiniz. Üç örnek bot da vardır ( Haskell , Python ve JavaScript ).
kurallar
- her bot değişikliğinde * turnuva tekrar oynanacak ve en çok puana sahip oyuncu kazanacak (tie-breaker ilk başvuru)
- ortak bir strateji oynamadıkları sürece birden fazla bot gönderebilirsiniz
- dizininizin dışındaki dosyalara dokunmanıza izin verilmez (örn. diğer oynatıcının dosyalarını değiştirme)
- botunuz çökerse veya geçersiz bir yanıt gönderirse, mevcut oyun sona erer ve o raundu kaybedersiniz
- Hâkim (şu anda) tur başına bir zaman sınırı uygulamazken, tüm başvuruları test etmek mümkün olmadığından harcanan zamanı düşük tutmanız tavsiye edilir **
- Yargıç programındaki hataları kötüye kullanmak boşluk deliği sayılır
* Botunuzu doğrudan bots
dizinde ayrı olarak göndermek (ve potansiyel olarak değiştirmek util.sh
) için Github'ı kullanmanız önerilir !
** Bu size bildirilecek bir sorun haline gelirse, 500 ms'nin altında bir şey söyleyebilirim (bu çok!) Şimdilik iyi olmalı.
Sohbet
Sorularınız varsa veya bu Koth hakkında konuşmak istiyorsanız, katılmak için çekinmeyin Sohbet !