AlienWar
Este jogo se passa em um planeta muito movimentado, onde os alienígenas são a raça superior. Sua tarefa é criar seu próprio alienígena e vencer todos os outros.
O quadro
É uma placa bidimensional.
O comprimento de um lado da placa é Math.ceil(sqrt(species * 100 * 2.5))
= ~ 40% da placa usada. O tabuleiro é um planeta; portanto, se você sair do mapa a oeste, voltará a leste. Se você sair no norte, se encontrará no sul.
Habilidades
Cada espécie do planeta tem habilidades. Aqui estão eles:
Nome Benefício vida HP = lifeLVL * 5 (reduz a cada golpe que você recebe, 0 = morto), HP base = 10 força Seus acertos causam um int aleatório no intervalo [1 a StrengthLVL] de dano defesa Selecione aleatoriamente int no intervalo [0 a (50 / defenceLVL + 1)], se int == 0, desvie do próximo ataque vision Dá-lhe visionLVL campos / 2 à sua volta cleverness Desfoca (aumenta) todas as habilidades aleatoriamente no intervalo [0 a clevernessLVL / 2] ao enviar para outros alienígenas
O jogo
- Haverá 100 instâncias de cada envio.
- Após instanciar, cada alienígena pode definir 10 pontos de habilidade no total. Você pode definir pontos diferentes para cada instância.
- Se você definir mais de 10 pontos, a instância morre.
- Um jogo consiste em 1000 rodadas. Cada rodada:
- Todo alienígena tem que retornar uma jogada via
move(char[] fields)
. Isso inclui Move.STAY. - Se vários alienígenas estiverem em um campo, 2 serão selecionados aleatoriamente:
- Se ambos concordarem com a paz (retornarem falsos
wantToFight
), eles permanecerão onde estão, ou então lutarão. - Isso ocorre até que apenas um alienígena permaneça no campo ou todos concordem em paz.
- Se ambos concordarem com a paz (retornarem falsos
- Todo alienígena tem que retornar uma jogada via
Se um alienígena mata alguma coisa, ele recebe 1/5 de cada uma das habilidades de seus inimigos . Os vencedores HP serão recarregados com 2 * enemyLifeLVL .
Vencedor é aquele com mais habilidades (soma de habilidades de alienígenas vivos).
Lutas
Os dois alienígenas vão se acertar "ao mesmo tempo", isso significa que se você matar o outro alienígena, ele ainda poderá atingi-lo uma vez.
Esquivando: Antes de ser atingido, o jogo irá calcular se você pode evitar o ataque usando rand.nextInt(50 / defenseLvl + 1) == 0
. defenseLvl nunca será maior que 50 ao calcular suas habilidades de esquiva (portanto, a chance máxima de esquiva é de 50%).
Bater: Se você não se esquivar do ataque, será atingido e seu HP será reduzido em rand.nextInt(enemy.getStrengthLvl()) + 1
.
Uma luta termina quando um ou os dois alienígenas envolvidos estão mortos. O vencedor, se houver, recebe a recompensa.
Regras do jogo
- O nível básico para cada habilidade (sem fornecer pontos de habilidade) é 1 (o HP base é 10).
- Os valores enviados quando solicitados a lutar são os níveis de vida (não HP!), Força, defesa e visão .
- A esperteza NÃO é enviada quando solicitado a lutar.
- Todos os números flutuantes serão ROUNDADOS para o número inteiro mais próximo ao usá-los / enviá-los, mas armazenados e aumentados como flutuantes.
- A chance máxima de esquiva é de 50%. Caso contrário, as brigas nunca poderão terminar.
A presa
Existem 5 espécies que já estão em campo. Por serem presas, optam por não lutar quando solicitadas.
Baleia: lvl 10 vida permanece Vaca: força nív. 10 movimento aleatório Tartaruga: defesa lvl 10 sudoeste Águia: visão lvl 10 Examina campos, tenta evitar o perigo Humano: inteligência nvl 10 Nordeste
Eles serão representados com a primeira letra (ou seja, W
para baleia) no mapa (Aliens com A
, campos vazios com espaço em branco ' '
).
Regras adicionais
- A reflexão não é permitida.
- Interagir (instanciar etc.) com outros alienígenas não é permitido.
- A gravação / leitura de recursos externos, como arquivos ou bancos de dados, também não é permitida.
- Somente envios de Java (versão 1.8) são permitidos (Java é bastante fácil e você não precisa ser um especialista para este jogo).
- Todos os envios devem estender a classe alienígena e serão colocados no pacote alienígena.
- Aceitarei o melhor alienígena no dia 19 de julho. Todos os estrangeiros enviados até às 12:00 UTC daquele dia serão testados.
- Máximo de 3 envios por usuário, pois já existem muitos alienígenas.
Exemplo de um alienígena
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;
}
}
Programa de controle
O código fonte do programa de controle pode ser encontrado aqui . Agora atualizado com todos os alienígenas incluídos na última corrida.
Pontuação final (20.07.2014, média de 10 jogos)
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 O que outras pessoas estão dizendo alienígena.CorporateAlien 1435.9 alien.GentleGiant 1422.4 alienígena.CropCircleAlien 1321.2 alien.VanPelt 1312.7 alienígena.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 pedra alienígena 369,4 alien.Assassino 277,8 Alienígena.Predicoward 170.1 vaca 155,2 alienígena.Morphling 105.3 alien.Eli 99.6 alien.Warrior 69.7 alien.Hunter 56.3 alien.Manager 37.6 alien.OkinawaLife 14.2 baleia 10.5 alien.Gamer 4.5 alien.Randomite 0 alien.Guard 0 águia 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 humano 0 alien.BlindBully 0 Tartaruga 0 alien.AimlessWanderer 0