AlienWar
Este juego tiene lugar en un planeta muy concurrido donde los extraterrestres son la raza superior. Tu tarea es crear tu propio alienígena y vencer a todos los demás.
El tablero
Es un tablero de 2 dimensiones.
La longitud de un lado del tablero es Math.ceil(sqrt(species * 100 * 2.5))
= ~ 40% del tablero usado. El tablero es un planeta, así que si sales del mapa en el oeste, regresas en el este. Si sales al norte, te encontrarás en el sur.
Habilidades
Cada especie en el planeta tiene habilidades. Aquí están:
Nombre Beneficio vida HP = lifeLVL * 5 (se reduce con cada golpe que recibes , 0 = muerto), base HP = 10 fuerza Tus golpes hacen un daño aleatorio int en el rango [1 a la fuerzaLVL] defensa Seleccione aleatoriamente int en el rango [0 a (50 / defenseLVL + 1)], si int == 0 entonces esquiva el siguiente ataque vision Le da visionLVL / 2 campos a su alrededor vision inteligencia Desenfoca (aumenta) todas las habilidades al azar en el rango [0 a inteligenciaLVL / 2] cuando se envía a otros alienígenas
El juego
- Habrá 100 instancias de cada envío.
- Después de la instancia, cada alienígena puede establecer 10 puntos de habilidad en total. Puede establecer diferentes puntos para cada instancia.
- Si establece más de 10 puntos, la instancia muere.
- Un juego consta de 1000 rondas. Cada ronda:
- Todo alienígena tiene que devolver un movimiento a través de
move(char[] fields)
. Esto incluye Move.STAY. - Si hay varios extraterrestres en un campo, se seleccionarán 2 al azar:
- Si ambos acuerdan la paz (regresar falso
wantToFight
) se quedarán donde están, de lo contrario lucharán. - Esto se repite hasta que solo un alienígena permanece en un campo o todos acuerdan la paz.
- Si ambos acuerdan la paz (regresar falso
- Todo alienígena tiene que devolver un movimiento a través de
Si un alienígena mata algo, obtiene 1/5 de las habilidades de cada uno de sus enemigos . Los ganadores HP serán rellenados con 2 * enemyLifeLVL .
El ganador es el que tiene más habilidades (suma de habilidades de los alienígenas vivos).
Peleas
Ambos alienígenas se golpearán entre sí "al mismo tiempo", esto significa que si matas al otro alienígena, él puede golpearte una vez.
Esquivar: antes de que te golpeen, el juego calculará si puedes esquivar el ataque usando rand.nextInt(50 / defenseLvl + 1) == 0
. defenseLvl nunca será mayor que 50 cuando calcules tus habilidades de esquivar (por lo tanto, la posibilidad máxima de esquivar es del 50%).
Golpear: si no esquivas el ataque, recibirás un golpe y tu HP se verá reducido en rand.nextInt(enemy.getStrengthLvl()) + 1
.
Una pelea termina cuando uno o ambos alienígenas involucrados están muertos. El ganador, si existe, obtiene la recompensa.
Reglas del juego
- El nivel base para cada habilidad (sin dar ningún punto de habilidad) es 1 (HP base es 10).
- Los valores que se envían cuando se les pide pelear son los niveles de vida (¡no HP!), Fuerza, defensa y visión .
- La inteligencia NO se envía cuando se le pide que pelee.
- Todos los números flotantes serán REDONDEADOS al entero más cercano cuando los use / envíe, pero se almacenarán y aumentarán como flotantes.
- La posibilidad máxima de esquivar es del 50%. De lo contrario, las peleas nunca pueden terminar.
La presa
Hay 5 especies que ya están en el campo. Como son presas, eligen no luchar cuando se les pide.
Ballena: lvl 10 estancias de vida Vaca: lvl 10 fuerza movimiento aleatorio Tortuga: lvl 10 defensa Suroeste Eagle: lvl 10 vision Examina los campos, trata de evitar el peligro. Humano: lvl 10 ingenio Nordeste
Se representarán con su primera letra (es decir, W
para ballena) en el mapa (Extranjeros con A
, campos vacíos con un espacio en blanco ' '
).
Reglas Adicionales
- La reflexión no está permitida.
- La interacción (instancias, etc.) con otros alienígenas está prohibida.
- La escritura / lectura de recursos externos como archivos o bases de datos también está prohibida.
- Solo se admiten envíos de Java (versión 1.8) (Java es bastante fácil y no tienes que ser un experto para este juego).
- Todas las presentaciones deben extender la clase alienígena y se colocarán en el paquete alienígena.
- Aceptaré al mejor alienígena el 19 de julio. Todos los extranjeros enviados antes de las 12:00 UTC de ese día serán evaluados.
- Máximo 3 envíos por usuario ya que ya hay muchos extraterrestres.
Ejemplo de un extraterrestre
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 control
El código fuente del programa de control se puede encontrar aquí . Ahora actualizado con todos los extraterrestres incluidos en la última ejecución.
Puntajes finales (20.07.2014, promedio de 10 juegos)
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. Piedra 369.4 alien.Assassin 277.8 alien.Predicoward 170.1 presa Vaca 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 presa Ballena 10.5 alien.Gamer 4.5 alien.Randomite 0 alien.Guard 0 presa águila 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 presa Humano 0 alien.BlindBully 0 presa tortuga 0 alien.AimlessWanderer 0