AlienWar
Ta gra ma miejsce na bardzo zatłoczonej planecie, na której kosmici są wyższą rasą. Twoim zadaniem jest stworzenie własnego kosmity i pokonanie wszystkich innych.
Tablica
Jest to dwuwymiarowa tablica.
Długość jednego boku deski wynosi Math.ceil(sqrt(species * 100 * 2.5))
= ~ 40% użytej deski. Plansza jest planetą, więc jeśli wyjdziesz z mapy na zachodzie, wrócisz na wschodzie. Jeśli wyjdziesz na północ, znajdziesz się na południu.
Umiejętności
Każdy gatunek na planecie ma zdolności. Tutaj są:
Nazwa Korzyści życie HP = życie LVL * 5 (zmniejsza się przy każdym otrzymanym trafieniu, 0 = śmierć), podstawowe HP = 10 siła Twoje trafienia powodują losowe obrażenia int w zasięgu [1 do siły LVL] defence Losowo wybierz int w zakresie [0 do (50 / defenceLVL + 1)], jeśli int == 0 to uniknij następnego ataku wizja Daje ci wizję LVL / 2 pola wokół ciebie spryt Rozmywa (zwiększa) każdą umiejętność losowo w zakresie [0 do sprytu LVL / 2] podczas wysyłania do innych kosmitów
Gra
- Będzie 100 wystąpień każdego zgłoszenia.
- Po instancji każdy obcy może ustawić łącznie 10 punktów umiejętności. Możesz ustawić różne punkty dla każdej instancji.
- Jeśli ustawisz więcej niż 10 punktów, instancja umiera.
- Gra składa się z 1000 rund. Każda runda:
- Każdy kosmita musi zwrócić ruch
move(char[] fields)
. Obejmuje Move.STAY. - Jeśli na polu znajduje się kilku kosmitów, 2 zostaną losowo wybrane:
- Jeśli obaj zgodzą się na pokój (powrócą fałszywie
wantToFight
), pozostaną tam, gdzie są, w przeciwnym razie będą walczyć. - Zapętla się, dopóki tylko jeden kosmita pozostanie na polu lub wszyscy zgodzą się na pokój.
- Jeśli obaj zgodzą się na pokój (powrócą fałszywie
- Każdy kosmita musi zwrócić ruch
Jeśli kosmita coś zabije, otrzymuje 1/5 umiejętności każdego z wrogów . Zwycięskie HP zostanie uzupełnione 2 * wrogaLifeLVL .
Zwycięzcą jest ten, który ma najwięcej umiejętności (suma umiejętności żywych kosmitów).
Walki
Obaj kosmici uderzą się nawzajem „w tym samym czasie”, co oznacza, że jeśli zabijesz drugiego kosmitę, nadal może cię uderzyć raz.
Unik: zanim zostaniesz trafiony, gra obliczy, czy możesz uniknąć ataku za pomocą rand.nextInt(50 / defenseLvl + 1) == 0
. defenceLvl nigdy nie będzie większa niż 50 podczas obliczania umiejętności unikania (stąd maksymalna szansa na unik wynosi 50%).
Trafienie: jeśli nie unikniesz ataku, zostaniesz trafiony, a twoje HP zostanie zmniejszone o rand.nextInt(enemy.getStrengthLvl()) + 1
.
Walka kończy się, gdy jeden lub obaj zaangażowani kosmici nie żyją. Zwycięzca, jeśli taki istnieje, otrzymuje nagrodę.
Zasady gry
- Poziom podstawowy dla każdej umiejętności (bez przyznawania punktów umiejętności) wynosi 1 (podstawowe HP to 10).
- Wartości wysyłane na prośbę o walkę to życie (nie HP!), Siła, obrona i wizja .
- Spryt NIE jest wysyłany na prośbę o walkę.
- Wszystkie liczby zmiennoprzecinkowe zostaną zaokrąglone do najbliższej liczby całkowitej podczas ich używania / wysyłania, ale będą przechowywane i zwiększane jako zmiennoprzecinkowe.
- Maksymalna szansa na unik to 50%. W przeciwnym razie walki nigdy się nie kończą.
Zdobycz
Na polu jest już 5 gatunków. Ponieważ są ofiarami, decydują się nie walczyć, gdy o to poproszą.
Wieloryb: 10 poziomów życia Krowa: siła 10 poziomu Losowy ruch Turtle: lvl 10 defense South west Orzeł: wizja 10 poziomu Bada pola, stara się unikać niebezpieczeństwa Człowiek: 10 poziom sprytu na północnym wschodzie
Będą reprezentowani z pierwszą literą (tj. W
Dla wieloryba) na mapie (Obcy z A
, puste pola z białymi spacjami ' '
).
Dodatkowe zasady
- Odbicie jest niedozwolone.
- Interakcje (instancje itp.) Z innymi kosmitami są zabronione.
- Niedozwolone jest również pisanie / czytanie zewnętrznych zasobów, takich jak pliki lub bazy danych.
- Dozwolone są tylko zgłoszenia Java (wersja 1.8) (Java jest raczej łatwa i nie musisz być ekspertem w tej grze).
- Wszystkie zgłoszenia muszą rozszerzyć klasę kosmitów i zostaną umieszczone w pakiecie kosmitów.
- Przyjmę najlepszego kosmitę 19 lipca. Wszyscy kosmici zgłoszeni do godziny 12:00 UTC tego dnia zostaną przetestowani.
- Maksymalnie 3 zgłoszenia na użytkownika, ponieważ jest już bardzo wielu obcych.
Przykład obcego
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;
}
}
Program sterujący
Kod źródłowy programu sterującego można znaleźć tutaj . Teraz zaktualizowane o wszystkich kosmitów uwzględnionych w najnowszym biegu.
Ostateczne wyniki (20.07.2014, średnio 10 gier)
alien.PredicatClaw 1635.4 alien.LazyBee 1618.8 alien.CartographerLongVisionAlien 1584.6 alien.ChooseYourBattles 1571.2 alien.Bender 1524.5 alien.HerjanAlien 1507,5 alien.FunkyBob 1473.1 alien.SecretWeapon2 1467,6 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 alien.Predicoward 170.1 ofiara Krowa 155,2 Alien.Morphling 105,3 alien.Eli 99,6 alien.Warrior 69.7 Alien.Hunter 56.3 alien.Manager 37,6 alien.OkinawaLife 14.2 ofiara.Whale 10.5 alien.Gamer 4.5 alien.Randomite 0 alien.Guard 0 zdobycz Orzeł 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 zdobycz Człowieka 0 alien.BlindBully 0 łup zdobycz 0 alien.AimlessWanderer 0