Hasil akhirnya ada di sini!
pengantar
Permainan yang diambil sangat terinspirasi oleh Manu's Game of Town . Itu terjadi di dunia pedang dan sihir. Raja yang memerintah seluruh benua baru saja mati, dan para penguasa banyak negara-kota sekarang bertempur memperebutkan wilayah. Anda adalah salah satu dari para penguasa ini dan tujuan Anda adalah menaklukkan dan memerintah setiap kota.
Prinsip
Orang-orang dibagi menjadi 8 kelas :
Warlocks : Fighter (magic)
Crusaders : Fighter (melee)
Amazons : Fighter (range)
Corsairs : Utility (steal, guard, transport)
Bishops : Utility (convert, exorcize)
Necromancers : Utility (resurrect)
Architects : Utility (build)
Peons : Resource (income, recruits)
Ketika permainan dimulai, Anda memerintah satu kota. Di setiap kota, ada 100 orang . Anda harus membaginya di antara 8 kategori tersebut.
Kemudian permainan yang sebenarnya dimulai, yang berbasis giliran. Giliran terdiri dari 12 fase , 7 di antaranya interaktif (meminta bot untuk suatu perintah). Fase berikutnya dimulai ketika fase sebelumnya telah dilaksanakan oleh setiap kota (Fase 1: Kota 1, Kota 2, Kota 3 ...; Tahap 2: Kota 1, Kota 2, Kota 3 ...):
1. Raise Taxes - AUTOMATED
2. Steal Money - INTERACTIVE
3. Recruit Troops - INTERACTIVE
4. Pay Wages - AUTOMATED
5. Try Revolt - AUTOMATED
6. Convert Soldiers - INTERACTIVE
7. Attack Town - INTERACTIVE
8. Raise Corpses - INTERACTIVE
9. Move Army or Tribute - INTERACTIVE
10. Defend against Threats - AUTOMATED
11. Construct Buildings - INTERACTIVE
12. Make Children - AUTOMATED
Kontroler memberi Anda input melalui argumen perintah, program Anda harus output melalui stdout.
Sintaksis
Keluaran (persiapan)
Sebelum permainan dimulai, pengontrol akan meminta Anda mengirim tanpa argumen. Ini berarti Anda harus mendistribusikan 100 orang Anda ke dalam 8 kategori.
Anda perlu menampilkan:
Warlocks Crusaders Amazons Corsairs Bishops Necromancers Architects Peons
Sebagai contoh: 15 10 12 10 7 5 1 40
.
Setiap kota juga dimulai dengan 500 emas dan 5 mayat.
Input
Setiap kali program Anda dipanggil, ia akan menerima argumen dalam format ini:Round;Phase;YourPlayerId;YourTownId;PlayerId_TownId_Gold_Corpses_Warlocks_Crusaders_Amazons_Corsairs_Bishops_Necromances_Architects_Peons_Temples_Barracks_Estates_Palaces;PlayerId_TownId_Gold_Corpses_Warlocks_Crusaders_Amazons_Corsairs_Bishops_Necromances_Architects_Peons_Temples_Barracks_Estates_Palaces;...
Contoh input
1;2;1;1;0_0_600_5_15_10_12_10_7_5_1_40_0_0_0_0;1_1_700_5_15_10_12_10_7_5_1_40_0_1_0_2;...
Di sini, Anda melihat itu adalah ronde 1, fase 2, Anda adalah pemain 1 di kota 1. Anda memiliki 700 emas, 5 mayat, 15 penyihir, 10 tentara salib, 12 amazons, 10 corsairs, 7 uskup, 5 ahli nujum, 1 arsitek, 40 peons, 0 kuil, 1 barak, 0 perkebunan dan 2 istana.
Keluaran
Lihat gameplay.
Gameplay
Semua fase
Command W
= TUNGGU
Perintah tidak valid = TUNGGU
Fase 1: Naikkan Pajak
Penghasilan dihasilkan sesuai dengan populasi Anda dan bangunan Anda yang sudah selesai:
+5 gold * Peons
+2 gold * (Warlocks + Bishops + Necromancers) * TEMPLES
+2 gold * (Crusaders + Amazons) * BARRACKS
+2 gold * (Corsairs + Peons) * ESTATES
+10 gold * PALACES
Fase 2: Mencuri Uang
Selama fase ini, Anda dapat mencuri uang dari satu kota dengan mengirim Corsair. Setiap Corsair dapat mencuri hingga 10 emas (yaitu 12 Corsair dapat mencuri hingga 120 emas). Jika kota target tidak memiliki cukup emas, corsairs Anda akan mencuri segalanya, hingga jumlah utang maksimum: 200 emas . Jika Anda mencoba mengirim lebih banyak Corsair daripada yang Anda miliki, program akan menggunakan semua Corsair yang tersedia.
Perintah sintaks :S DestinationId Corsairs
Fase 3: Rekrut Pasukan
Di sini Anda dapat melatih prajurit infanteri Anda dengan menghabiskan beberapa emas. Anda dapat merekrut unit sebanyak yang Anda inginkan, selama Anda memiliki cukup prajurit infanteri dan emas. Jika Anda mencoba merekrut lebih dari yang sebenarnya Anda bisa, gim akan merekrut secara acak sampai semuanya telah habis. Program ini menghormati kuota maksimum Anda (jika Anda mencoba merekrut 10 tentara salib dan 5 amazon hanya dengan 8 prajurit, misalnya akan merekrut 6 tentara salib dan 2 Amazon, dan bukan 8 Amazon atau 8 penyihir).
Warlock : 10 gold
Crusader : 10 gold
Amazon : 10 gold
Corsair : 12 gold
Bishop : 20 gold
Necromancer : 20 gold
Architect : 15 gold
Perintah sintaks :R Warlocks Crusaders Amazons Corsairs Bishops Necromancers Architects
Fase 4: Upah Bayaran
Gaji didebit menurut populasi Anda:
-1 gold * (Warlock + Crusaders + Amazons)
-2 gold * (Corsairs + Bishops + Necromancers + Architects)
Fase 5: Coba Pemberontakan
Jika saldo Anda negatif, Anda kehilangan kendali atas kota Anda ke Penjahat . Setelah pemberontakan, emas kota dipindahkan ke nilai awal: 500 emas . Populasi dipertahankan pada level saat ini.
Fase 6: Konversi Tentara
Setiap Uskup Anda dapat mengonversi 1 tentara musuh (Warlock, Crusader atau Amazon) dari Kota yang dipilih dengan biaya 50 emas per unit. Unit yang dikonversi bergabung dengan pasukan yang ditempatkan di kota Anda. Seperti halnya perekrutan, jika Anda tidak memiliki cukup emas atau uskup, program ini akan dikonversi secara acak sambil menghormati kuota.
Perintah sintaks :C DestinationId Warlocks Crusaders Amazons
Fase 7: Serang Kota
Anda dapat mengirim pasukan Penyihir, Tentara Salib, dan Amazon untuk menaklukkan Kota. Jika Anda mencoba mengirim lebih dari yang Anda miliki, program akan mengirim semua orang.
Para prajurit memiliki bonus pertempuran 1,5 mengikuti pola ini: Mage > Range > Melee > Mage
(mis. Seorang Warlock melawan Amazon mendapatkan kekuatan 1,5). Hanya unit yang berlebih yang mendapatkan bonus ini (mis. Warlock melawan Warlock dan Amazon tidak mendapatkan bonus ini). Bonus ini dikaitkan dengan pelanggaran dan pertahanan.
Kerugian didistribusikan secara acak antara unit-unit pemenang sesuai dengan kekuatan total yang lebih longgar (mis. Kekuatan pelanggaran: 12 vs Kekuatan pertahanan: 14, Pertahanan menang dan kehilangan 12 unit). Looser kehilangan semua unitnya. Setiap unit mati ditambahkan ke jumlah mayat kota yang diserang. Jika pelanggaran menang, kota itu ditangkap dan sekarang dimiliki oleh penyerang. Dia juga menyimpan emas, mayat dan prajurit infanteri yang ada di kota ini. Corsair, Uskup, Necromancer dan Arsitek melarikan diri di depan penindasan potensial.
Pertahanan tidak mendapat apa-apa.
Perintah sintaks :A DestinationId Warlocks Crusaders Amazons
Fase 8: Angkat Mayat
Masing-masing ahli nujum Anda dapat membangkitkan hingga 5 orang dengan memakan mayat dan menghabiskan emas. Setiap Peons yang dibangkitkan menelan biaya 1 mayat dan 20 emas. Jika Anda mencoba membangkitkan lebih dari yang Anda bisa, program akan menghabiskan semua yang Anda miliki.
Perintah sintaks :R Corpses
Fase 9: Pindahkan Tentara atau Penghormatan
Anda dapat mengirim unit ke kota lain. Jika Anda mencoba mengirim lebih dari yang Anda miliki, program akan mengirim semua orang.
Perintah sintaks :M DestinationId Warlocks Crusaders Amazons Corsairs Bishops Necromancers Architects
Atau, Anda dapat mengirim emas dengan mencarter kapal-kapal Corsairs. Setiap corsair dapat mengangkut hingga 200 emas . Jika Anda mencoba mengirim lebih dari yang Anda miliki, program akan mengirimkan apa yang Anda miliki.
Perintah sintaks :T DestinationId Gold
Fase 10: Bertahan dari Ancaman
Beberapa ancaman mengancam kota Anda:
- Zombies: Orang mati tidak selalu mati seperti yang terlihat. 10% (lantai) mayat di kota Anda akan bangun dan memakan otak. Setiap zombie akan memakan 1 Peon dan kemudian mengembara ke ketiadaan (Mayat kedua Zombies dan Peons dimakan dimakan).
- Iblis: Prajurit Anda perlu mendengar khotbah atau mereka akan mulai memanggil Roh Gelap. Masing-masing Uskup Anda memenuhi kebutuhan hingga 50 Peons. 10% (lantai) dari bidat Anda (Peons yang berlebihan) akan menelurkan Setan. Setan membunuh 1 Peon masing-masing dan kembali ke neraka (Corpses of Peons ditambahkan ke hitungan kota).
- Bandit: Penjahat tinggal di lingkungan itu. Total populasi Penjahat dibagi secara adil antara kota-kota dan dikirim untuk mencuri kekayaan. Satu-satunya pertahanan Anda adalah patroli Corsair Anda. Setiap corsair dapat berhenti hingga 5 penjahat. Setiap penjahat tidak berhenti mencuri 10 emas dari kota Anda (utang kota maksimum adalah 200 emas)
Setidaknya 1 kota Penjahat (100 populasi) dihasilkan pada awal permainan, kemudian 1 lagi untuk setiap 5 pemain (mis. 1-4 Pemain: 1 Penjahat, 5-9 Pemain: 2 Penjahat ...). Pelanggar hukum dapat dikenali denganid = -1
Fase 11: Membangun Bangunan
Saat mencapai tahap ini, pembangunan gedung di kota Anda berkembang sesuai dengan jumlah Arsitek. Setiap Arsitek meningkatkan penyelesaian Bangunan tunggal sebesar 8%. Ketika suatu Bangunan mencapai 100%, itu selesai dan mulai menghasilkan pendapatan di Fase "Pajak" berikutnya. Antrian konstruksi dikelola secara otomatis (pertama datang, pertama dilayani).
Anda kemudian dapat memulai konstruksi Bangunan lain (BuildingId = Surat dalam tanda kurung):
TEMPLE (T) : 200 Gold
BARRACKS (B) : 200 Gold
ESTATE (E) : 200 Gold
PALACE (P) : 500 Gold
Anda dapat memulai pembangunan sebanyak mungkin Bangunan yang Anda inginkan, dan jika Anda tidak memiliki cukup emas, Bangunan akan diabaikan. Konstruksi Bangunan baru Anda hanya akan mulai putaran berikutnya.
Perintah sintaksis :B BuildingId BuildingId BuildingId ...
Fase 12: Membuat Anak-Anak
Setiap lima ronde (ronde 5, 10, 15 ...), Prajurit baru akan lahir dan siap bertarung. Setiap pasangan Peons akan menghasilkan 1 Peon (mis. 23 Peons menghasilkan 11 Peon baru).
Aturan
- Bot tidak boleh ditulis untuk mengalahkan atau mendukung bot lain yang spesifik.
- Menulis ke file diperbolehkan. Silakan menulis ke "milikmu submisi.txt", folder akan dikosongkan sebelum permainan dimulai. Sumber daya eksternal lainnya tidak diizinkan.
- Kiriman Anda memiliki 1 detik untuk merespons (per kota).
- Berikan perintah untuk mengkompilasi dan menjalankan kiriman Anda.
Kemenangan
Pemenang adalah yang memiliki kota terbanyak setelah 100 putaran. Jika seorang pemain menangkap semua kota, permainan berhenti dan dia menang. Jika beberapa pemain memiliki jumlah kota yang sama, total populasi akan dihitung, maka jumlah emas.
Pengendali
Anda dapat menemukan pengontrol di github. Ini juga mengandung 2 samplebot, ditulis dalam Java. Buka di Eclipse, tempatkan bot yang dikompilasi di folder root dan tambahkan kelas ke program kontrol (seperti samplebots).
Perkelahian
Formula pertarungannya kira-kira seperti ini:
Untuk setiap kelas prajurit (Warlock, Crusader, Amazon):
- Hitung keseimbangan antara serangan dan pertahanan (mis. Siapa yang memiliki lebih dari masing-masing kelas dan berapa banyak lagi?)
- Untuk kelebihan tentara (mis. Nilai keseimbangan positif), lihat ada berapa "target lemah" (lihat diagram Fase 7).
- Lipat gandakan kekuatan prajurit (mis. "Target lemah" dibandingkan dengan "kelebihan tentara") dengan bonus dan tambahkan sisanya dengan kekuatan bertarung 1.
Anda dapat mencoba simulator di sini: http://ideone.com/ArJosE (cukup ubah nilai tentara, Anda akan mendapatkan bonus dan total kekuatan)
Berikut adalah beberapa kasus uji:
Attack Defense A. Bonus D. Bonus A. Str D. Str Winner
20/10/0 12/12/12 8/0/0 0/2/10 34.0 42.0 Defense
40/0/5 12/12/12 12/0/0 0/12/0 51.0 42.0 Attack
0/60/8 10/30/2 0/10/6 8/0/0 76.0 46.0 Attack
20/20/40 90/5/5 0/15/5 40/0/0 90.0 120.0 Defense
Hasil akhir
Rata-rata 10 pertandingan. Sintaks:Player(Towns, Population, Gold)
1. Opportunist(6.4, 4165, 2895626)
2. Politician(6.4, 1048, 42542)
3. Outlaw(2.8, 1575, 349073)
4. YoungEarl(0.4, 3424, 941624)
5. Aegis(0, 0, 0)
. Butter(0, 0, 0)
. Commander(0, 0, 0)
. Lannister(0, 0, 0)
. Machiaveli(0, 0, 0)
. Monarch(0, 0, 0)
. Serenity(0, 0, 0)
. Sehtimianer(0, 0, 0)
. Sleeper(0, 0, 0)
. Zealots(0, 0, 0)
Hasil dari 10 game: http://pastebin.com/GdufEYjm
Log lengkap 2 permainan: http://pastebin.com/GQDZ0JdY & http://pastebin.com/m3UBTDuC
Dimainkan semua orang, pertarungan telah benar-benar dekat antara Politisi dan Oppotunis.
The total Outlaws population is divided equitably between towns and sent to steal wealth.
Berapa total bandit?