Scriptbot Warz!
Sonuçlar geldi ve Assassin 3 maçın 2'sini kazanan şampiyonumuz! Senaryolarını gönderen herkese teşekkürler! Özel teşekkürler boynuzları için BestOpportunityBot mükemmel pathing görüntülenen ve tüm eylem seçeneklerinin tam kullanmıştır.
Harita 1
Assassin BestOpportunityBot'u erkenden çıkardı ve maçın geri kalanı oldukça sıkıcıydı. Burada ayrıntılı play-by-play.
- Suikastçı: 10 HP, 10 Hasar Verilen, 3 Hasar Alınan
- Avoider v3: 10 HP, 0 Verilen Hasar, 0 Alınan Hasar
- Yemek Bitirmeli: 10 BG, Verilen Hasar, 0 Alınan Hasar
- En İyi Fırsat: 0 HP, 3 Hasar Verilen, 10 Hasar Alınan
Harita 2
BestOpportunityBot bu maçtaki çalışmaların çoğunu yaptı, ancak Assassin sonunda onu çıkardı. Burada ayrıntılı play-by-play.
- Suikastçı: 2 HP, 10 Hasar Verilen, 9 Alınan Hasar
- En İyi Fırsat: 0 HP, 32 Hasar Verilen, 10 Hasar Alınan
- Avoider v3: 0 Beygir gücü, 0 Verilen Hasar, 12 Alınan Hasar
- Yemek Bitirmeli: 0 Beygir gücü, 0 Verilen Hasar, 11 Alınan Hasar
Harita 3
BestOpportunityBot bu maçta herkesi tuzağa düşürdü. Çok havalı. Burada ayrıntılı play-by-play.
- En İyi Fırsat: 10 HP, 30 Hasar Verilen, 0 Alınan Hasar
- Suikastçı: 0 BG, Verilen Hasar, 0 Alınan Hasar
- Yemek Bitirmeli: 0 Beygir gücü, 0 Verilen Hasar, 0 Alınan Hasar
- Avoider v3: 0 Beygir gücü, 0 Verilen Hasar, 0 Alınan Hasar
Cevaplarınız için teşekkürler! Sadece 4 Scriptbot olduğu için, aşağıdaki haritaların her birinde birer tane olmak üzere üç ücretsiz maç için turnuva planlarını terk ediyoruz. En yüksek kazanma rekoruna sahip scriptbot kazanır. Beraberlik durumunda, aniden ölüme gireceğiz, burada bağı ilk koparan scriptbot kazanır.
Göreviniz, kabul etmeyi seçerseniz, bir ASCII haritasını geçip rakiplerini yok edebilecek bir Scriptbot'u kodlamaktır. Her savaş, her Scriptbot'un harekete geçmek için enerji puanlarını (EP) kullanma şansına sahip olduğu, rastgele başlangıç sırası, sıra tabanlı bir oyun şeklinde olacaktır. GameMaster betiği, her Scriptbot'a girdi besler ve çıktıyı yorumlar.
çevre
Her Scriptbot, ve dizinlerinden okuyabileceği map
ve stats
dosyayı okuyabileceği / yazabileceği kendi dizininde bulunur data
. data
Dosya işinize yarayabilecek herhangi kalıcı bilgileri depolamak için kullanılabilir.
İstatistik Dosyası
stats
Dosyanın rakipler hakkında bilgi içerir ve aşağıdaki gibi biçimlendirilir. Her oyuncu ayrı bir sırada gösterilir. İlk sütun bir oyuncu kimliğidir ( @
sizi ifade eder). İkinci sütun o oyuncunun sağlığıdır.
1,9HP
@,10HP
3,9HP
4,2HP
Harita Dosyası
map
Dosya bu gibi görünebilir ...
####################
# # # #
# 1 # # 2 #
# #
### ###
# #
# # #
# # ! #
# # #
# !#### #
# ####! #
# # #
# ! # #
# # #
# #
### ###
# #
# 3 # # @ #
# # # #
####################
... veya bu...
######################################
# # 1 # @ #
# # # #! #
# # # #### #
# # # # # !#! #
# # # # # ##### #
# ### # #### # # #
# # #! ### # #
# ###### # # # ##### #
# #! # ###### # !# #
# ### # # # #
# # 2 # # 4 # #
######################################
... veya bu...
###################
###!!!!!!#!!!!!!###
##! !##
#! 1 ! 2 !#
#! ! !#
#! !#
#! !#
#! !!! !#
## !! !!! !! ##
#! !!! !#
#! !#
#! !#
#! ! !#
#! 3 ! @ !#
##! !##
###!!!!!!#!!!!!!###
###################
... ya da tamamen farklı görünebilir. Her iki durumda da, kullanılan karakterler ve anlamları aynı kalır:
#
Geçilemez ve geçilemez bir duvar.1
,2
,3
... bir düşman oyuncuyu temsil eden bir sayı. Bu sayılar,stats
dosyadaki oynatıcı kimliğine karşılık gelir .!
Bir tuzak. Bu yerlere hareket eden scriptler hemen ölecek.@
Scriptbot'unuzun konumu.Hareket etmekte özgür olduğunuz açık alan.
Oynanış
GameMaster betiği, Betik botlarına rastgele bir başlangıç sırası atar. Daha sonra Scriptbotlar hala hayatta iken bu sırayla çağrılır. Scriptbot'larda 10 Sağlık Puanı (HP) vardır ve her turda 10 Enerji Puanı (EP) ile başlarlar; Her turun başlangıcında, bir Scriptbot bir HP için iyileşir veya zaten 10 HP'de ise ilave bir EP daha verilir (bu nedenle çalıştırma bazen uygun bir strateji olabilir).
Savaş sadece bir Scriptbot hayatta kaldığında veya 100 tur geçtiğinde sona erer. Bir savaşın sonunda birden fazla Scriptbot yaşıyorsa, yerleri aşağıdaki kriterlere göre belirlenir:
- Çoğu sağlık.
- En çok hasar verildi.
- En çok hasar alındı.
Scriptbot Girişi
GameMaster savaş haritasını map
Scriptbot'un okumak için erişebileceği bir dosyaya yazdıracaktır. Harita herhangi bir biçimde olabilir, bu yüzden Scriptbot'un onu yorumlayabilmesi önemlidir. Scriptbot'unuz EP'yi gösteren bir parametre ile çağrılır. Örneğin...
:> example_scriptbot.py 3
Scriptbot tüm EP'sini veya en fazla 10 11 kez harcayana kadar çağrılır . Harita ve istatistik dosyaları her çağrıdan önce güncellenir.
Scriptbot Çıkışı
Senaryo botları eylemlerini şişmanlamak için çıkarmalıdır. Olası eylemlerin bir listesi aşağıdaki gibidir:
MOVE <DIRECTION> <DISTANCE>
Başına 1 EP maliyeti
DISTANCE
.MOVE
Komut haritası etrafında Scriptbot taşır. Bir duvar veya başka bir Scriptbot gibi bir şey varsa, GameMaster Scriptbot'unuzu mümkün olduğunca hareket ettirir.DISTANCE
Scriptbot'un kalan EP'sinden daha büyük bir değer verilirse, GameMaster, Scriptbot'u EP bitene kadar hareket ettirir.DIRECTION
herhangi bir pusula yön olabilirN
,E
,S
ya daW
.PUSH <DIRECTION> <DISTANCE>
Başına 1 EP maliyeti
DISTANCE
.PUSH
Komut başka Scriptbot taşımak için bir Scriptbot sağlar. Komutu veren Scriptbot, doğrudan itilen Scriptbot'un yanında olmalıdır. Scriptbot'u iten bir nesne yoksa, her iki Scriptbot da belirtilen yönde hareket edecektir.DIRECTION
ve komutlaDISTANCE
aynıdırMOVE
.ATTACK <DIRECTION>
Bir EP maliyeti.
ATTACK
Komut veren Scriptbot için belirlenmiş yöne hemen yanında herhangi Scriptbot 1 damage.DIRECTION
,MOVE
komutla aynıdır .PASS
Sıranızı sonlandırır.
Desteklenen Diller
Bunu benim için makul tutmak için aşağıdaki dilleri kabul edeceğim:
- Java
- node.js
- piton
- PHP
Kutusundan çıkar çıkmaz dillerinizle birlikte paketlenmiş kitaplıklarla sınırlısınız. Lütfen kodunuzun çalışması için belirsiz kütüphaneleri bulmama izin vermeyin.
Teslim ve Değerlendirme
Scriptbot kaynak kodunuzu aşağıya yazın ve havalı bir ad verin! Lütfen kullandığınız dilin sürümünü de listeleyin. Tüm Scriptbotlar tomfoolery için incelenecektir, bu yüzden lütfen iyi yorum yapın ve kodunuzu gizlemeyin.
Birden fazla giriş gönderebilirsiniz, ancak lütfen bunları aynı girişin sürümlerini değil tamamen benzersiz girişler yapın. Örneğin, bir Zerg Rush botunu ve bir Gorilla Warfare botunu kodlamak isteyebilirsiniz. Bu iyi. Zerg Rush v1, Zerg Rush v2 vb. Göndermeyin.
7 Kasım'da tüm cevapları toplayacağım ve ilk incelemeyi geçen cevaplar bir turnuva dirseğine eklenecek. Şampiyon kabul edilen cevabı alır. İdeal braket aşağıda gösterilmiştir. Tam olarak 16 giriş olmayacağından, bazı köşeli parantezler sadece üç hatta iki bot olabilir. Desteği olabildiğince adil yapmaya çalışacağım. İlk gönderilen botlara gerekli her türlü kayırmacılık (örneğin bir hoşçakal haftasının gerekli olması halinde) verilecektir.
BOT01_
BOT02_|
BOT03_|____
BOT04_| |
|
BOT05_ |
BOT06_|___ |
BOT07_| | |
BOT08_| | |_BOT ?_
|___BOT ?_|
BOT09_ ___BOT ?_|___CHAMPION!
BOT10_| | _BOT ?_|
BOT11_|__| |
BOT12_| |
|
BOT13_ |
BOT14_|____|
BOT15_|
BOT16_|
S & C
Eminim bazı detayları kaçırdım, bu yüzden soru sormaktan çekinmeyin!
Bir harita dosyasının her zaman # sembolle çevrili olduğuna güvenebilir miyiz? Değilse, bir botun haritadan çıkmaya çalışması durumunda ne olur? - BrainSteel
Evet, harita her zaman # ile sınırlandırılacak ve Scriptbot'unuz bu sınırların içinde başlayacaktır.
PUSH komutunda belirtilen yönde hiç bot yoksa, komut nasıl çalışır? - BrainSteel
GameMaster hiçbir şey yapmaz, sıfır EP harcanır ve Scriptbot tekrar çağrılır.
Kullanılmayan EP birikir mi? - feersum
Hayır. Her Scriptbot turu 10 EP ile başlatacaktır. Harcanmayan EP'ler boşa gidecek.
Sanırım anladım, ama sadece açıklığa kavuşturmak için: A ve B botları ile, A @ 10EP-> MOVE MAP_UPDATE B @ 10EP-> PUSH MAP_UPDATE A @ 9EP-> ATTACK MAP_UPDATE B @ 9EP-> SALDIRI ... veya A @ 10EP-> HAREKET A 9EP-> SALDIRI ... HARİTA_UPDATE B @ 10EP-> PUSH B @ 9EP-> SALDIRI ... HARİTA_UPDATE? Diğer bir deyişle, tüm eylemler tek bir denetleyici-bot sorgu döngüsü atomik midir? Eğer öyleyse, neden döngü? Neden tamamlanacak tüm eylemleri içeren tek bir dosya döndürmüyorsunuz? Aksi takdirde botların çoklu eylem dizilerini takip etmek için kendi durum dosyalarını yazmaları gerekecektir. Harita / istatistik dosyası yalnızca ilk işlemden önce geçerli olacaktır. - COTO
İkinci örneğiniz yakın, ama tam olarak doğru değil. Bir dönüş sırasında Scriptbot, EP'si harcanana kadar veya maksimum 11 kez tekrar tekrar çağrılır. Harita ve istatistik dosyaları her çağrıdan önce güncellenir. Döngü, bir botun geçersiz çıktı vermesi durumunda kullanışlıdır. GameMaster geçersiz çıktı ile başa çıkacak ve botu tekrar dahil edecek ve botu hata düzeltmesi için bir şans verecektir.
Test için GameMaster betiğini yayınlayacak mısınız? - IchBinKeinBaum
GameMaster betiği yayınlanmaz. Botunuzun davranışını test etmek için bir harita ve istatistik dosyası oluşturmanızı öneririm.
RobotA, robotB'yi bir tuzağa iterse, robotA'nın "hasar verilen" puanları, robotB'nin mevcut sağlığına eşit mi? - Mike Sweeney
Evet, bu iyi bir fikir. Bir bot, bir tuzağa ittiği herhangi bir botun sağlığına eşit hasar puanları verecektir.
#
olacak ve Scriptbot'unuz bu sınırların içinde başlayacaktır.
map
dosyanın daima#
sembollerle çevrili olduğuna güvenebilir miyiz ? Değilse, bir botun haritadan çıkmaya çalışması durumunda ne olur?