Nazik komşunuz Doktor Tree, size Codémon adında üç büyülü yaratık verdi. Yakındaki Colorville kasabasında bir savaş turnuvası var. Sen hiç kimsenin olmadığı gibi, en iyisi misin?
genel bakış
Bu bir savaş turnuvası. Her oyuncu üç canavardan oluşan bir takımı kontrol eder ve amaç diğer takımı nakavt etmek (öldürmektir). Kazanılan ve bağlanan puanlar ile 100 tur vardır. En yüksek puana sahip takım kazanır!
Canavarlar
Bir Codémon karmaşık bir küçük yaratıktır. Seçilebilecek beş tip (öğe), üç istatistik ve her birinde üç hareketli yuva vardır.
Türleri
Her Codémon'a bir tip atanır . Beş tür Normal, Psişik, Ateş, Su ve Çim. Her birinin güçlü ve zayıf yönleri vardır. Hasar, aşağıdaki şemaya dayanmaktadır:
Sayılar hasar çarpanlarıdır. Örneğin, Ateşe Saldıran Su 0.5 değiştiriciye sahiptir (yarı hasar), Ateşe Saldıran Çim iki katına çıkarılır (2).
İstatistikleri
Her canavarın, savaş yeteneklerini belirleyen üç istatistiği vardır. Saldırı verdiği hasarı arttırır. Savunma aldığı hasarı azaltır. Hız, daha düşük Hız olanlara göre hareket etmesine izin verir.
Her canavar, her stat için 50 başlangıç değerine ve maksimum 100 değerine sahiptir. Canavarlarınızı yarattığınızda, 80 ek stat puanı (her biri) atayabileceksiniz . Hiçbir kişisel statün 100'den fazla geçemeyeceğini unutmayın. Yani, 100/80/50, 90/80/60 veya 65/65/100 dağılımınız olabilir, ancak 120/50/60 yasa dışıdır. Yasadışı istatistiklere sahip herhangi bir takım diskalifiye edilir. Sen değil gerekli tüm 80 puan kullanmak, ama muhtemelen en az 50/50/50 ile gitmemeli.
Ayrıca HP'yi bir stat olarak düşünebilirsiniz, ancak her Codémon'un değiştirilemez bir 100 HP'si vardır. HP sıfıra düştüğünde, savaşa devam edemezler. Her savaştan önce HP 100'e kadar doldurulur.
hamle
Her canavar üç savaş hamlesi biliyor. Seçilen üç ayrı olmalıdır, bu nedenle Punch / Punch / Punch yoktur.
Her türden üçü olmak üzere 15 hamle var. Her tür doğrudan bir saldırı, etkisi olan daha zayıf bir saldırı ve tek bir etki hareketi vardır.
id name type power uses usable effect
0 Punch N 20 - NFWG
1 Heal N 0 3 NFWG Heals 50 HP
2 Slow N 10 5 NFWG Enemy speed x0.8
3 Pain P 20 - PFWG
4 Sleep P 0 3 PFWG No enemy action until wake
5 Weaken P 10 5 PFWG Enemy Atk x0.8
6 Fireball F 20 - NPFW
7 Burn F 0 3 NPFW Enemy -10 HP each turn
8 Sharpen F 10 5 NPFW Own Atk x1.25
9 Watergun W 20 - NPWG
10 Confuse W 0 3 NPWG Enemy may strike itself (10 power)
11 Shield W 10 5 NPWG Own Def x1.25
12 Vine G 20 - NPFG
13 Poison G 0 3 NPFG Enemy -5xTurns HP each turn
14 Sap G 10 5 NPFG Enemy Def x0.8
type
hareketin türünü ifade eder. power
onun çarpıcı gücüdür. uses
Savaş başına kaç kez kullanılabileceğini gösterir ( -
sınırsızdır). usable
hangi türler tarafından kullanılabileceğini gösterir (örneğin, Punch, yok olduğu gibi Psişik bir türe verilemez P
). effect
Hareketlerin ne gibi etkileri olduğunu gösterir. Her zaman işe yarayan İyileşme dışında, her bir efektin çalışma şansı% 75'tir.
Bir canavarın istatistiklerini değiştiren efektler için efektler yığınlanabilir . Örneğin, Weaken'i iki kez kullanmak, rakibinizin saldırısını 0.64 etkinliğe düşürebilir. Canavarın istatistiklerini değiştirmeyen efektler (Uyku, Yanma vb.) Yığılmaz .
Uyku , rakibi uyku durumuna geçirir ve her dönüşte% 60 uyanma şansı verir. Uyuyan canavarlar tarafından herhangi bir işlem yapılmayacaktır.
Yanarken aktif olduğunda her turun sonunda rakibe 10 HP hasar verir . Zehir benzer çalışır, ancak her turda artan miktarda alır. İlk dönüşte 5 olur ve daha sonra her dönüşte 5 kazanır. Dördüncü sırayla 20'ye zarar verecek. Bunlar canavarın cinsinden etkilenmeyen veya bonuslara tabi olmayan düz hasarlardır.
Karışıklık , yapılması söylenenleri yapmak yerine bir canavarı kendi başına saldırabilir. Bu saldırı 10'lu güce sahip ve belirli bir zamanda% 30'luk bir şansı var.
Açık olmak gerekirse, etkiler savaşın sonuna kadar sürecek (yukarıda belirtildiği gibi Uyku hariç).
Ayrıca, ilgili tipte bir canavar tarafından kullanılması durumunda, hamleler de% 20 güç kazanıyor. Örneğin, Vine kullanan bir Grass monster, Punch kullanırken değildir.
Gizli İstatistikler
Her canavarın istatistikleri ve türü (ancak hamle değil ) kamu bilgisidir. Rakipleriniz, en iyi aksiyonu seçmek için ne savaştıklarını görebilecekler. Ancak, gizli olan bonuslar da var.
Özellikle, her iki savaştan sonra , ekibinizdeki her canavar için bir "bonus" stat puanı kazanacaksınız. Tüm canavarlara puanlar verilir , ölü veya diri, kazanan veya kaybeden. Bunu, seçtiğiniz üç istatistikten hangisine atayabilirsiniz. Onları tek bir canavara yığamazsınız; Her canavar her seferinde bir tane alır . Bu noktalar 100 limitine karşı bağışıklık kazanır. 100 savaş turu olacağından, bu bonusları kendisine tahsis ederseniz 149'a kadar tek bir stat alabileceğiniz anlamına gelir. Yine, rakip sadece "temel" istatistiklerinizi görecek, bu nedenle turnuvada ne kadar uzağa giderseniz, onların bilgisi o kadar fazla olur.
Savaş
Her seferinde bir takım aktif olan üç takım arasında savaş yapılır. Başlangıçta, rakibin takımı gösterilecek ve ilk "aktif" oyuncunuz olarak hangi canavarın seçileceği sorulacak.
Bundan sonra, dönüşler aşağıdaki adımlarla gerçekleşir:
- Anahtar: Zorunlu canavar anahtarları (varsa) gerçekleşir
- Savaş eylemini seç
- Anahtar: İsteğe bağlı herhangi bir canavar anahtarı (savaş eylemi olarak seçilir) gerçekleşir
- Uyku Kontrolü: Uykudan uyanma şansı
- Saldırı 1: Mümkünse, hızlı canavar kendi hareketini kullanır
- Saldırı 2: Mümkünse, diğer canavar seçtiği hamleyi kullanır
- Etki hasarı: Canlı canavarlara yanık / zehir hasarı uygulayın
"Speedier" daha hızlı olan canavar anlamına gelir. Her iki hız istatistiği aynıysa, her turda PRNG jetonlu çevirme ile seçilir.
Aktif canavarınızın öldüğü herhangi bir dönüşün sonunda, yeni bir aktif seçmeniz istenecektir. Sen olabilir ayrıca aktif canavarlar geçmeyi tercih sizin hareket olarak (hayatta birden fazla olması koşuluyla) herhangi bir dönüş için. Yine, hamleniz olarak geçerseniz, o dönüşü bir savaş hamlesi yapmazsınız.
Etkin değilken canavarlar "işlenmez". Bu, yanma / zehirlenme hasarı almadıkları, zehir sayaçlarının birikmediği, uykudan uyanmadıkları vb . Anlamına gelir . Bu diğer canavar savaş oyunu değil. Saldırı yükseltilmiş ve yakılmış durumdayken kapatırsanız, geri döndüğünüzde hala orada olacaklar.
Etkili hasar, aktif rakibinizi öldürseniz de etmeseniz de gerçekleşir. Bu şekilde, her iki takımın üyeleri tek seferde ölebilir.
Bir takım kullanılabilir canavarlardan kaçtığında, kaybederler. Her iki takımda aynı sırada koşarsa, bu bir kravat. Savaş 1000 dönüş sürerse, bu bir kravat.
Hasar belirleme formülü:
floor((effAttack / effDefense) * movePower * typeMultiplier * moveBoost)
effAttack
ve effDefense
olan etkili canavarlar için istatistikleri. Etkili saldırı, Saldırı ve Bonus Saldırı eklenerek elde edilir, daha sonra herhangi bir etkisi değişirse çarpılarak (0.8 veya 1.25). Bu efektlerin birikebileceğini unutmayın.
Hasar sadece tip değiştirici 0 (Normal <--> Psişik) veya hareketin Gücü 0 (İyileş, Yan, vb.) Olduğunda 0 olabilir. Aksi takdirde, minimum 1 olarak uygulanır.
Turnuva
Turnuvalar 100 tur sürer. Her turda takımlar rastgele karıştırılır ve birbirlerine karşı eşleştirilir. Tek sayıda takım varsa, kalanlar bir bye alır (beraberlik puanları). Bir savaşı kazanmak, takımı 2 puan kazanır , bağlar 1 değerindedir ve hiçbir şey kaybetmez. Sonunda en yüksek puana sahip takım kazanır!
Eğer takımlar bağlanırsa, ilk sıradaki sırayı belirlemek için sadece ilk etapta bağlı takımların yer aldığı bir turnuva gerçekleşir.
Protokol
Denetleyici programınıza dört komuttan birini gönderir. İlk karakter, gerekirse aşağıdaki verileri izleyerek komut türünü belirler.
Programınız komutu argüman olarak kabul edecek ve bir saniye içinde STDOUT'ye cevap verecektir . STDIN dinlerken hayatta kalmayın, orada olmayacak. Her komut yeni bir süreç ortaya çıkarır.
Diske veri / durum yazabilirsiniz. Herhangi bir dosyayı ekibinizle aynı ada sahip bir alt klasöre yerleştirin. 32 kilobayttan fazla veri yazmayın, aksi takdirde diskalifiye edilirsiniz. Veriler turlar arasında devam edecek, ancak turnuvalar arasında silinecek.
Komutları
Takım Verileri
Bu, takımınızı kaydettirmek için turnuva başında bir kez gönderilir. Cevabınız sabit olmalı , her turnuva için farklı olmamalıdır .
Sorgu:
T
Tepki:
name|member0|member1|member2
name
takım adınıza sahip bir dizedir. Lütfen ayrıştırma kolaylığı için yalnızca alfasayısal kullanın. memberN
her canavarın ayrıntılarını veren bir üye dizisidir:
Üye dizesi:
name:typeid:attack:defense:speed:moveid0:moveid1:moveid2
Yine, 'isim' bir dizedir, bu sefer bu canavarın ismiyle. typeid
onun tipi. Tip kimlikleri yukarıdaki tabloda gösterilen sıradadır, Normal = 0 ve Çim = 4.
Sonraki üç alan sizin temel istatistiklerinizdir. Yukarıdaki istatistikler bölümünde açıklanan sınırları unutmayın.
Son üç canavarın hamleleri. ID'ler yukarıdaki hareket tablosunda gösterilmiştir.
Örnek bir ekip verisi cevabı şöyle görünebilir:
DummyTeam|DummyA:0:50:60:70:0:1:2|DummyB:0:50:60:70:0:1:2|DummyC:0:50:60:70:0:1:2
Çöpleri, kötü biçimlendirilmiş veya yasadışı verileri geri gönderen hiçbir takım düzeltilinceye kadar katılmayacaktır.
Aktif seç
Bu, her savaşın başlangıcında ve bir canavar öldüğünde ve değiştirilmesi gerektiğinde gönderilir.
Sorgu:
C#battleState
battleState
mevcut savaşın durumunu gösterir. Burada benimle ayı, bu çirkin:
yourTeamState#theirTeamState
Neye XteamState
benziyor:
name:activeSlot|member0state|member1state|member2state
activeSlot
hangi canavarın aktif olduğunu gösterir (0-2). Üye devletler iki farklı tada sahiptir. Bu senin takımınsa, ekstra bilgi verir. Yani,
Sizin memberXstate:
name:id:attack:defense:speed:hp:typeid:poisonedturns:moveCount0:moveCount1:moveCount2:bonusAttack:bonusDefense:bonusSpeed:effectid:effectid:effectid
Onların memberXstate:
name:id:attack:defense:speed:hp:typeid:poisonedturns:effectid:effectid:effectid
id
kullanmaktan hoşlanmıyorsanız canavarları takip etmek için kullanabileceğiniz bir tamsayı tanımlayıcısıdır name
.
attack:defense:speed
senin olan taban istatistikleri.
poisonedturns
Size kaç kez zehirlendiğinizi söyler.
moveCountX
Her hareket için kaç kullanımınız kaldığını söyler. 0 ise, kullanılamaz. Sınırsız hamle için, bu negatif olacaktır.
bonus(stat)
Her stat için atadığınız bonus puan miktarıdır.
effectid
canavarınıza uygulanan, değişken boyutlu bir efekt listesidir. Orada olacak olmayan bir arka olmak :
veya mevcut aktif etkilerinin olup olmadığı, ipe. Yığılmış efektler varsa, listede birden fazla efekt olarak görünecektir.
Etki kimlikleri:
0 NONE (should not appear, internal use)
1 POISON
2 CONFUSION
3 BURN
4 SLEEP
5 HEAL (should not appear, internal use)
6 ATTACK_UP
7 ATTACK_DOWN
8 DEFENSE_UP
9 DEFENSE_DOWN
10 SPEED_DOWN
Tepki:
memberSlot
Gerekli olan tek cevap, hangi üyeye aktif olmak istediğinizi söyleyen tek bir sayı 0,1,2'dir. Bu, savaşabilecek bir üye olmalı. 1
Üye 1 ölmüşse geri göndermeyin .
Savaş eylem
Her seferinde ne yapacağınıza karar vermeniz gerekir.
Sorgu:
A#battleState
battleState
Yukarıda tarif edildiği gibi burada tam olarak budur.
Tepki:
Bir hamle kullanmak için, hareketin bulunduğu yuvayı geri gönderin. Örneğin, Punch'ı slot 0'a atadıysam, gönderme 0
Punch gerçekleştirir.
Başka bir üyeye geçmek için üyenin yuvasına artı on gönderin . Böylece üye 2'ye geçmek için gönderin 12
.
[0,1,2,10,11,12] 'de bulunmayan herhangi bir şey geçersiz sayılır ve bu işlem yapılmaz.
Bonus İstatistikleri
Her iki savaştan sonra, her takım üyesi için gizli bir bonus puanı kazanırsınız.
Sorgu:
B#yourTeamState
Takımın durumu yukarıda gösterilenle aynı, tekrar etmemi sağlama.
Tepki:
stat0:stat1:stat2
Yanıtınız, her takım üyesi için hangi statün yükseltileceğini temsil edecektir. Saldırı 0, Savunma 1, Hız 2.
Böylece, bir üyenin hızını, ikinci üyenin saldırısını ve üçüncü üyenin savunmasını yükseltmek için, aşağıdakileri yanıtlarsınız:
2:0:1
kontrolör
Kontrolör BitBucket'te bulunabilir: https: //Geobits@bitbucket.org/Geobits/codemon.git
Derlenmiş tüm sınıf dosyalarını, başvuruları ve players.conf dosyasını bir klasöre atıp çalıştırın.
Kontrolörün ana sınıfı denir Tournament
. Kullanım:
java Tournament [LOG_LEVEL]
0-4 arasındaki günlük seviyeleri artan bilgi verir. Seviye 0 turnuvayı sessizce yürütür ve sadece 3. seviyenin adım adım yorum yaptığı yerde sonuçları verir. Seviye 4, hata ayıklama çıktısıdır.
Turnuvaya gönderimler players.conf
ekleyebilirsiniz. Programı çalıştırmak için gereken komut satırı dizesini sadece satır başına bir tane ekleyin. İle başlayan satırlar yorumdur #
.
Gönderinize, benim eklemem gereken komutu players.conf
ve derleme adımlarını (gerekirse) ekleyin .
Dahil üç Normal hareketi ile tüm Normal üyelerden oluşan kukla bir ekip. Rastgele hareketleri seçiyorlar ve korkunç istatistiklere sahipler. Onları dayak eğlenin.
Çeşitli Kurallar
Herhangi bir harici kaynağı okuyamaz veya yazamazsınız (kendi alt klasörünüz dışında, yukarıda belirtilen 32 kB'ye kadar).
Takımınızın "kör" turnuvasına girmesi gerekiyor. Bu, belirli bir takım / canavarın belirli bir durumda ne yapacağını bulmak için diğer insanların kaynağını analiz edemeyeceğiniz anlamına gelir. Sen edebilirsiniz hiçbir hardcoding bu bilgileri rakibinin hamlelerini / istatistikleri analiz etmek ve turnuva ilerledikçe takip fakat.
Diğer işlemlere / gönderimlere müdahale etmeyin. Onları çağırmak yok, verilerini elde etmek için yansıma kullanmak, vb. Bilgisayarımı karıştırmayın. Sadece deneme. Bu benim takdirime bağlı. İhlalcilerin gelecekteki girişleri engellenebilir.
Yarışmacılar en fazla iki girişle sınırlıdır . Daha fazla gönderirseniz, sadece gönderilen ilk ikisini puanlayacağım. Birini iptal etmek istiyorsanız, silin.
Girişler yalnızca diğer girişleri desteklemek için bulunmayabilir. Ayrıca, diğer yarışmacıları dolaylı olarak diskalifiye etmeye çalışamazsınız (örneğin, bunu diske yazmaya çalışan DQ oyuncularına 27M karakter takımı adı kullanarak). Her gönderim kendi esası ile kazanmak için oynamalıdır.
Programınız bir seferde en fazla bir çocuk süreci doğurabilir (doğrudan değil, torunlar). Hem ana hem de alt süreçler çıktı verdikten sonra doğrudan sonlandırılmalıdır. Her iki durumda da, zaman aşımını aşmadığınızdan emin olun.
Turnuva, Ubuntu çalıştıran bilgisayarımda Intel i7 3770K işlemci ile gerçekleştirilecek.
Sonuçlar
Bunlar mevcut oyuncuların sonuçları. En iyi yarışmacılar arasında çok yakın ve tur sayısını 500'e kadar çarpmayı düşünüyorum (ve bonus puanlarının aralığını eşleşecek şekilde ayarlamayı). Herhangi bir itiraz, yorum?
------- Final Results -------
158 Happy3Campers
157 LittleKid
71 InsideYourHead
68 HardenedTrio
46 BitterRivals
Google Drive'da tam oynatma sonuçları
bye
, eşit olmayan sayıda yarışmacı için artık hiçbir şey yok ve maç çiftlerinin adil ve eşit bir şekilde dağıldığından emin olunur.
n^2
bunun yerine ölçeklendirir n
. Sadece mevcut 7 yarışmacı ve 100 rauntla, bu 2100 savaş (bu oyuna göre 300 ve 500 raunt ile 1500). Sadece daha fazla giriş geldiğinde daha da kötüleşiyor. Mermi sayısını geri ölçekleyebildim, ancak doğal değişkenlik nedeniyle (esp'lerle ilgili esp) ve bunu yapmak için tereddüt ettim (50 puan için).