Muhtemelen , matematikçi John Conway'in icat ettiği ünlü hücresel otomat olan Conway'in Yaşam Oyununu biliyorsunuzdur . Hayat birlikte, iki boyutlu bir hücre tahtasını simüle etmenize izin veren bir kurallar bütünüdür. Kurallar, tahtadaki hangi hücrelerin yaşadığına ve hangilerinin öleceğine karar verir. Bazı hayal gücüyle, Hayatın sıfır oyunculu bir oyun olduğunu söyleyebilirsiniz : Ünlü planör gibi ilginç davranışa sahip desenler bulma amacı taşıyan bir oyun.
Sıfır oyuncu oyunu ... Bugüne kadar. Hayat Oyunu'nu oynayan bir program yazacaksınız ve kazanmak için oynuyor, Tepenin Tarzında Kralı. Tabii ki rakibiniz (tekil) aynı şeyi yapmaya çalışıyor. Kazanan ya canlı hücreleri olan son bot ya da 10000 nesiller sonra en canlı hücreleri olan oyuncu.
Oyun kuralları
Kurallar neredeyse normal (B3 / S23) ile aynıdır.
- İkiden az arkadaşça komşusu olan bir canlı hücre açlıktan ölür.
- İki veya üç dostane komşusu olan bir canlı hücre hayatta kalır.
- Üçten fazla dostane komşusu olan bir canlı hücre aşırı nüfustan ölür.
- Aynı oyuncunun tam olarak üç komşusu olan ölü bir hücre, düşman komşusu olmaması şartıyla o oyuncu için savaşmak üzere canlanır .
... ama her nesilden sonra, hem siz hem de rakibiniz müdahale etme fırsatını yakalar. Sizin için savaşmak için maksimum 30 hücreye kadar uyanabilirsiniz. (Önce kim gider sunucu tarafından belirlenir.)
Tahta (x, y) hücre karesidir. Tüm kareler başlangıçta öldü. Sınırlar etrafa sarılmıyor (bu torus şekilli bir dünya değil) ve kalıcı olarak ölüyorlar.
Bu, Battlebots ve Core Wars ruhunda bir yarışmadır . Botları çalıştıracak merkezi bir sunucu var ve burada bulunabilir .
Protokol
Arena sunucusu argv üzerinden iletilen basit bir JSON protokolü konuşuyor
Değerler JSON kodlu bir dizedir
y_size
: kaybolmadan önce en fazla y çini koordinatıx_size
: Çini kaybolmadan önce azami x karo kordonutick_id
: Geçerli kene numarasıboard
: '(y, x)' formundaki anahtarlar vebot_id
(int) formundaki değerlerbot_id
: tahtadaki karolar bu kimliğe sahip
Örnek:
{"y_size":2000,"x_size":2000,"board":{},"bot_id":1,"tick_id":1}
Sunucuya seçiminizi söyleme:
- Renginize dönmesi için sunucuya bir karo listesi gönderin.
- Sadece boş olanlar değişecek
- İç içe kodlar liste formatı
[[0,0], [0,1], [100,22]...]
NOT: Botunuz döşemeleri hiç güncellemek zorunda değildir - sunucu güncellemeyi kendisi yapar
Rekabet kuralları
- Uygulamanız protokolü takip edemezse, sırasını kaybeder; Sunucu durumunda değişiklik olmadığını kabul eder
- Arena sunucusundaki bir hatadan isteyerek faydalanmanıza izin verilmez.
- AI'nızın aklı başında bir zamanda hareketlere karar vermesini sağlayın. Lütfen bir sonraki hareketinizi olabildiğince hızlı bir şekilde gönderin.
- Son olarak, lütfen sunucuya iyi davranın. Zevkiniz için orada.
- Bu kurallara uymamak diskalifiye olmasına yol açabilir.
- Bir beraberlik durumunda, her iki oyuncunun da toplamında 1 galibiyet var
Kumandayı kendin işletmek
Denetleyicinin kaynağı burada bulunabilir . Denetleyiciyi çalıştırmanın 2 yolu vardır:
- Rekabet modu (terminal)
- İle kurmak
python3 get_answers.py
- Tüm botlarla birbiriyle mücadele eden her bot ile bir all v all yarışması yapın.
- İle kurmak
- Test modu (GUI)
- Çalıştırmak
python3 nice_gui.py
- Click
Pull Answers
- Göndermeden önce denemek için kendi cevabınızı eklemek istiyorsanız
File -> Add manual answer
, dosyayı tıklayın ve bulun ve içinde yazıldığı dili seçin. - Diliniz bana ping atmıyorsa ve sunucuya yüklenmesini deneyeceğim, onu çalıştıracağım (kurulum ve çalıştırma talimatları da iyi olurdu!)
- Birbirine geçmek için 2 bot seçin
- Click
Run
- Oyun izle...
- Çalıştırmak
- Kurulum
- Python3 gerektirir
- get_answers bs4 ve html5lib gerektirir
- denetleyicisi, .sh dosyalarını çalıştırmanın bir yolunu gerektirir (pencerelerde MinGW)
puanlama
En çok galibiyet alan bot 12/07/2016
(12 Temmuz)14/07/2016
(14 Temmuz, bir botun nasıl çalıştırılacağını çözemedi).
Bu sohbet odasında denetleyici / gui ile ilgili yardım istenebilir
Bu soru 2014'ten bu yana gelişme aşamasındadır ve sanal alanda en çok sorulan soru olmuştur. Özel Teşekkürler Wander Nauta'ya (orijinal yazar ve konsept), PPCG Sohbetine (yorumlar ve yardım) ve sandbox gönderisine yorum yapan herkese (daha fazla yorum) gider .