AlienWar
Bu oyun uzaylıların üstün ırk olduğu çok kalabalık bir gezegende gerçekleşiyor. Senin görevin kendi uzaylı oluşturmak ve diğerlerini yenmektir.
Pano
2 boyutlu bir tahtadır.
Kartın bir tarafının uzunluğu Math.ceil(sqrt(species * 100 * 2.5))
kullanılan kartın = ~% 40'ıdır. Tahta bir gezegen, yani batıdaki haritadan çıkarsanız doğuya geri dönersiniz. Kuzeyde yürürseniz, kendinizi güneyde bulacaksınız.
Yetenekleri
Gezegendeki her türün yetenekleri vardır. İşte buradalar:
Ürün Adı Fayda ömrü HP = lifeLVL * 5 (aldığınız her vuruşta, 0 = ölüde azalır), temel HP = 10 gücü Vuruşlarınız [1 - strengthLVL] hasar aralığında rastgele bir int yapar savunma Rastgele [0 - (50 / defenseLVL + 1)] aralığında bir int seçin , eğer int == 0 ise bir sonraki saldırıdan sıyrılır vizyon size verir visionLVL size vizyon etrafında / 2 alanlarını akıllılık Diğer uzaylılara gönderirken [0 ila akıllılıkLVL / 2] aralığında rastgele her yeteneği bulanıklaştırır (arttırır)
Oyun
- Her gönderimin 100 örneği olacak.
- Dikkate alındıktan sonra her yabancı toplam 10 yetenek puanı belirleyebilir. Her örnek için farklı noktalar belirleyebilirsiniz.
- 10 noktadan fazla ayarlarsanız, örnek ölür.
- Bir oyun 1000 turdan oluşmaktadır. Her turda:
- Her uzaylı bir hamle yapmak zorunda
move(char[] fields)
. Buna Move.STAY de dahildir. - Birkaç uzaylı bir alanda ise, 2 rasgele seçilir:
- Her ikisi de barış konusunda hemfikirdirlerse (yanlış dönerlerse
wantToFight
) oldukları yerde kalırlar, yoksa savaşırlar. - Bu, sadece bir uzaylı bir alanda kalana ya da hepsi barışa katılıncaya kadar döngüler.
- Her ikisi de barış konusunda hemfikirdirlerse (yanlış dönerlerse
- Her uzaylı bir hamle yapmak zorunda
Bir uzaylı bir şeyi öldürürse , düşman yeteneklerinin 1 / 5'ini alır . Kazananlar HP, 2 * enemyLifeLVL ile doldurulacak .
Kazanan en yetenekli olanıdır (yaşayan uzaylıların yeteneklerinin toplamı).
kavgalar
Her iki uzaylı da "aynı anda" birbirlerine vuracak, bu da diğer uzaylıyı öldürürseniz, bir kez size vurabileceği anlamına gelir.
Atlama: Vurulmadan önce, oyunu kullanarak atağı atlatabilirseniz hesaplar rand.nextInt(50 / defenseLvl + 1) == 0
. defenseLvl kaçma becerilerinizi hesaplarken asla 50'den büyük olmayacak (bu nedenle en fazla kaçma şansı% 50'dir).
Vurmak: Eğer saldırıdan kaçmazsanız, vuracaksınız ve HP'niz düşecek rand.nextInt(enemy.getStrengthLvl()) + 1
.
Bir yabancı ya da her iki yabancı da öldüğünde, kavga sona erer. Kazanan varsa biri ödülü alır.
Oyun kuralları
- Her yetenek (temel puan vermeden) için temel seviye 1'dir (temel HP 10'dur).
- Savaşmak istendiğinde gönderilen değerler yaşam (HP değil!), Güç, savunma ve vizyon düzeyleridir.
- Savaşmak istendiğinde akıllılık gönderilmez.
- Tüm kayan sayılar, kullanıldığında / gönderilirken en yakın tam sayıya YUVARLAK, ancak kayan nokta olarak saklanıp artırılacak
- Maksimum kaçma şansı% 50'dir. Aksi takdirde kavgalar asla sona ermeyebilir.
Av
Sahada zaten 5 tür var. Av olduklarından, istendiğinde savaşmamayı seçtiler.
Balina: lvl 10 hayat kalır İnek: lvl 10 gücü Rastgele hareket Kaplumbağa: lvl 10 defans Güney batı Eagle: lvl 10 vision Alanları inceliyor, tehlikeyi önlemeye çalışıyor İnsan: lvl 10 akıllılık Kuzey doğu
W
Haritadaki ilk harfleriyle (yani balina için) temsil edilecekler (Yabancılar A
, boşluklu boş alanlar ' '
).
Ek Kurallar
- Yansıma izin verilmez.
- Diğer yabancılar ile etkileşime girme (instancing vb.) Yasaktır.
- Dosya veya veri tabanı gibi harici kaynakları yazmak / okumak da yasaktır.
- Yalnızca Java (sürüm 1.8) gönderimlerine izin verilir (Java oldukça kolaydır ve bu oyun için uzman olmanız gerekmez).
- Tüm başvurular yabancı sınıfı genişletmeli ve yabancı pakete yerleştirilecektir.
- 19 Temmuz'da en iyi uzaylıyı kabul edeceğim. O gün saat 12: 00'de bildirilen tüm yabancılar test edilecektir.
- Zaten çok fazla uzaylı bulunduğundan, kullanıcı başına maksimum 3 başvuru.
Bir uzaylı örneği
package alien;
import planet.Move;
public class YourUniqueNameHere extends Alien {
public void setAbilityPoints(float[] abilities) {
abilities[0] = 2; //life
abilities[1] = 2; //strength
abilities[2] = 2; //defense
abilities[3] = 2; //vision
abilities[4] = 2; //cleverness
}
public Move move(char[][] fields) {
//you are in the middle of the fields, say fields[getVisionFieldsCount()][getVisionFieldsCount()]
return Move.STAY;
}
public boolean wantToFight(int[] enemyAbilities) {
//same order of array as in setAbilityPoints, but without cleverness
return true;
}
}
Kontrol programı
Kontrol programının kaynak kodu burada bulunabilir . Şimdi son çalıştırılan tüm yabancılar ile güncellendi.
Final puanları (20.07.2014, 10 oyun ortalaması)
alien.PredicatClaw 1635.4 alien.LazyBee 1618.8 alien.CartographerLongVision Alien 1584.6 alien.ChooseYourBattles 1571.2 alien.Bender 1524.5 alien.HerjanAlien 1507.5 alien.FunkyBob 1473.1 alien.SecretWeapon2 1467.9 alien.PredicatEyes 1457.1 alien.CorporateAlien 1435.9 alien.GentleGiant 1422.4 alien.CropCircleAlien 1321.2 alien.VanPelt 1312.7 alien.NewGuy 1270.4 alien.BananaPeel 1162.6 alien.Rock 1159.2 alien.BullyAlien 1106.3 alien.Geoffrey 778.3 alien.SecretWeapon 754.9 alien.SecretWeapon3 752.9 alien.FunkyJack 550.3 alien.Stone 369.4 alien.Assassin 277.8 yabancı. Predicoward 170.1 av. alien.Morphling 105.3 alien.Eli 99.6 alien. Savaşçı 69.7 alien.Hunter 56.3 alien.Manager 37.6 alien.OkinawaLife 14.2 av. Balina 10,5 alien.Gamer 4.5 alien.Randomite 0 alien.Guard 0 avcı.Eagle 0 alien.Rogue 0 alien.WeakestLink 0 alien.Fleer 0 alien.Survivor 0 alien.Sped 0 alien.Junkie 0 alien.Coward 0 alien.CleverAlien 0 avcı.İnsan 0 alien.BlindBully 0 avcı.Turtle 0 alien.AimlessWanderer 0