AlienWar
Questo gioco si svolge in un pianeta molto affollato dove gli alieni sono la razza superiore. Il tuo compito è quello di creare il tuo alieno e battere tutti gli altri.
Il bordo
È una scheda 2 dimensionale.
La lunghezza di un lato della scheda è Math.ceil(sqrt(species * 100 * 2.5))
= ~ 40% della scheda utilizzata. Il tabellone è un pianeta, quindi se esci dalla mappa ad ovest, ritorni ad est. Se esci a nord, ti ritroverai a sud.
Capacità
Ogni specie sul pianeta ha abilità. Eccoli:
Nome Benefit vita HP = lifeLVL * 5 (si riduce con ogni colpo si prende, 0 = morti), base HP = 10 forza I tuoi colpi infliggono un danno casuale nell'intervallo [1 a strengthLVL] difesa Seleziona casualmente int nell'intervallo [da 0 a (50 / defenceLVL + 1)], se int == 0 evita il prossimo attacco vision Ti dà visionLVL / 2 campi intorno alla tua visione intelligenza Sfoca (aumenta) ogni abilità a caso nell'intervallo [da 0 a intelligenza LVL / 2] quando si invia ad altri alieni
Il gioco
- Vi saranno 100 istanze per ogni invio.
- Dopo aver istanziato, ogni alieno può impostare 10 punti abilità in totale. È possibile impostare punti diversi per ogni istanza.
- Se imposti più di 10 punti, l'istanza muore.
- Un gioco è composto da 1000 round. Ogni round:
- Ogni alieno deve restituire una mossa tramite
move(char[] fields)
. Ciò include Move.STAY. - Se più alieni sono su un campo, 2 saranno selezionati casualmente:
- Se entrambi concordano sulla pace (ritornano falsi
wantToFight
) rimarranno dove sono, altrimenti combatteranno. - Questo continua fino a quando un solo alieno rimane su un campo o tutti concordano sulla pace.
- Se entrambi concordano sulla pace (ritornano falsi
- Ogni alieno deve restituire una mossa tramite
Se un alieno uccide qualcosa, ottiene 1/5 di ciascuna delle sue abilità nemiche . I vincitori HP verranno ricaricati con 2 * nemiciLifeLVL .
Il vincitore è quello con il maggior numero di abilità (somma delle abilità degli alieni viventi).
combattimenti
Entrambi gli alieni si colpiranno "allo stesso tempo", questo significa che se uccidi l'altro alieno, può ancora colpirti una volta.
Schivare: prima di essere colpito, il gioco calcolerà se puoi schivare l'attacco usando rand.nextInt(50 / defenseLvl + 1) == 0
. defenceLvl non sarà mai maggiore di 50 quando si calcolano le abilità di schivata (quindi la probabilità di schivata massima è del 50%).
Colpire: se non schivi l'attacco, verrai colpito e i tuoi PS saranno ridotti di rand.nextInt(enemy.getStrengthLvl()) + 1
.
Una lotta termina quando uno o entrambi gli alieni coinvolti sono morti. Il vincitore, se esiste, ottiene la ricompensa.
Regole del gioco
- Il livello base per ogni abilità (senza assegnare punti abilità) è 1 (HP base è 10).
- I valori inviati quando viene chiesto di combattere sono la vita (non HP!), La forza, la difesa e la visione livelli di .
- L'intelligenza NON viene inviata quando viene chiesto di combattere.
- Tutti i numeri fluttuanti verranno ROUNDED all'intero più vicino quando li si utilizza / si inviano, ma memorizzati e aumentati come float.
- La massima possibilità di schivata è del 50%. Altrimenti i combattimenti potrebbero non terminare mai.
La preda
Ci sono 5 specie che sono già sul campo. Dato che sono prede, scelgono di non combattere quando viene loro richiesto.
Whale: lvl 10 life Soggiorni Mucca: livello 10 mossa casuale Tartaruga: livello 10 difesa sud-ovest Aquila: visione di livello 10 Esamina i campi, cerca di evitare il pericolo Umano: intelligenza di livello 10 Nord-est
Saranno rappresentati con la loro prima lettera (cioè W
per la balena) nella mappa (Alieni con A
, campi vuoti con uno spazio ' '
).
Regole aggiuntive
- La riflessione non è consentita.
- L'interazione (istanza ecc.) Con altri alieni è vietata.
- È vietata anche la scrittura / lettura di risorse esterne come file o database.
- Sono consentiti solo invii Java (versione 1.8) (Java è piuttosto semplice e non devi essere un esperto per questo gioco).
- Tutti gli invii devono estendere la classe aliena e saranno inseriti nel pacchetto alieno.
- Accetterò il miglior alieno il 19 luglio. Tutti gli alieni inviati entro le 12:00 UTC quel giorno saranno testati.
- Massimo 3 invii per utente poiché ci sono già molti alieni.
Esempio di un alieno
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;
}
}
Programma di controllo
Il codice sorgente per il programma di controllo è disponibile qui . Ora aggiornato con tutti gli alieni inclusi nell'ultima corsa.
Punteggio finale (20.07.2014, media di 10 partite)
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.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 alien.Predicoward 170.1 preda.Cow 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 preda. balena 10.5 alien.Gamer 4.5 alien.Randomite 0 alien.Guard 0 preda.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 preda Umano 0 alien.BlindBully 0 preda.Turtle 0 alien.AimlessWanderer 0