1. Introducción
El proyecto consistirá en reproducir combates como el famoso juego “Pokemon”, en el que dos entrenadores, cada uno con 6 pokemons lucharán por turnos hasta que alguno de los dos se agoten o se rinda.
2. Partes
- Inicio El inicio será una pantalla con:
- Pantalla de manejo de pokemons Se podrán añadir nuevos pokemons, borrar, modificarlos, mostrarlos ordenados o buscar por nombre. Tendrá un botón de jugar para pasar a la siguiente pantalla.
- Pantalla de elección de pokemons Se escogerán 6 pokemons para cada entrenador de los que hay precargados
- Pantalla de combate Se mostrará nuestro pokemon y el rival, ambos con su barra de vida y su nombre, además de 4 opciones: Lucha, Pokemon(para elegir otro pokemon) y huida(para huir del combate). En el combate habrá interacción con el usuario.
- Pantalla final Al acabar la partida, saldrá una pantalla con victoria o con derrota
- Código
Un campo para introducir el nombre del usuario
Un botón de entrar para entrar en la aplicación
Un botón de ‘Acerca de’ que mostrará información sobre el autor.
Un botón de ‘Ayuda’ que abrirá una ayuda
- Clase Usuario Será el usuario o entrenador del juego. Dispondrá de los siguientes campos:
- Clase Pokemon Será la clase padre de los pokemons. Tendrá los siguientes campos:
- Clase Agua Clase hija que hereda de Pokemon. Implementa la interfaz Atacable y Defensable
- Clase Fuego Clase hija que hereda de Pokemon. Implementa la interfaz Atacable y Defensable
- Clase Planta Clase hija que hereda de Pokemon. Implementa la interfaz Atacable y Defensable
- Clase Electrico Clase hija que hereda de Pokemon. Implementa la interfaz Atacable y Defensable
- Clase Volador Clase hija que hereda de Pokemon. Implementa la interfaz Atacable y Defensable
- Enumeración Ataques
- Interfaz Atacable Tendrá getAtaque().
- Interfaz Defensable Tendrá getDefensa().
- Excepciones ContrasenaNoValidaException, CorreoNoValidoException, IndiceNoValidoException, PokemonNoExisteException, PokemonYaExisteException, UsuarioNoValidoException, VidaNoValidaException
- Expresiones regulares Para controlar que la dirección de correo, contraseña y nombre de usuario sean válidos.
- Fechas Para calcular cuanto tiempo lleva el usuario registrado en el sistema
Alias: Alias del usuario
Lista de pokemons: Hasta 6 pokemons puede tener
Fecha de registro: Para conocer cuando se registra y el tiempo que lleva registrado
Se almacenarán en un archivo
Nombre: Nombre del pokemon
Tipo: Será el tipo que tenga cada pokemon
Vida: Vida del pokemon entre 300 y 500 Además todos los pokemons se almacenarán en un fichero, y al cargarlos se introducirán en un arrayList para manejarlos
danoBase: Daño base para cada ataque de tipo agua.
Defensa: Defensa de cada pokemon dependiendo del tipo del atacante
Precisión: Precisión de cada ataque del pokemon
Ataques[4]: Array de ataques de tipo agua. Cada uno tendrá un daño base + número aleatorio entre 30 y 90
danoBase: Daño base para cada ataque de tipo Fuego.
Defensa: Defensa de cada pokemon dependiendo del tipo del atacante
Precisión: Precisión de cada ataque del pokemon
Ataques[4]: Array de ataques de tipo fuego. Cada uno tendrá un daño base + número aleatorio entre 30 y 90
danoBase: Daño base para cada ataque de tipo Planta.
Defensa: Defensa de cada pokemon dependiendo del tipo del atacante
Precisión: Precisión de cada ataque del pokemon
Ataques[4]: Array de ataques de tipo planta. Cada uno tendrá un daño base + número aleatorio entre 30 y 90
danoBase: Daño base para cada ataque de tipo eléctrico.
Defensa: Defensa de cada pokemon dependiendo del tipo del atacante
Precisión: Precisión de cada ataque del pokemon
Ataques[4]: Array de ataques de tipo eléctrico. Cada uno tendrá un daño base + número aleatorio entre 30 y 90
danoBase: Daño base para cada ataque de tipo volador.
Defensa: Defensa de cada pokemon dependiendo del tipo del atacante
Precisión: Precisión de cada ataque del pokemon
Ataques[4]: Array de ataques de tipo volador. Cada uno tendrá un daño base + número aleatorio entre 30 y 90
/**
* Ataques de tipo agua
*/
PISTOLA_AGUA, HIDROBOMBA, RAYO_BURBUJA, SURF, HIDRO_CANON, ACUA_COLA, CASCADA, HIDROPULSO,
/**
* Ataques de tipo eléctrico
*/
BOLA_VOLTIO, CHISPA, CHISPAZO, ELECTROCANION, IMPACTRUENO, ONDA_VOLTIO, RAYO, TRUENO,
/**
* Ataques de tipo fuego
*/
ASCUAS, GIRO_FUEGO, LANZALLAMAS, LLAMARADA, ONDA_IGNEA, RUEDA_FUEGO, HUMAREDA, PIROTECNIA,
/**
* Ataques de tipo planta
*/
HOJA_AFILADA, LATIGAZO, RAYO_SOLAR, FOGONAZO, ENERGIBOLA, CUCHILLA_SOLAR, DANZA_PETALO, HOJA_AGUDA,
/**
* Ataques de tipo volador
*/
ACROBATA, AIRE_AFILADO, ATAQUE_AEREO, ATAQUE_ALA, GOLPE_AEREO, PICO_TALADRO, PICOTAZO, TORNADO;
La clase que lo implemente, tendrá que calcular el daño para cada ataque que tenga, partiendo de un daño base de la propia clase y sumándole un numero aleatorio entre 30 y 90. Por ejemplo si el daño base es 15, se le sumará un aleatorio entre 30 y 90
La clase que lo implemente, calculará la defensa según el tipo atacante. Si el tipo del atacante es superior al de nuestro pokemon actual, el daño recibido es doble, mientras que si es al contrario, el daño recibido es la mitad. Si es de un tipo indiferente, se reducirá del daño solo la defensa que tenga nuestro pokemon.
NOTA:
Es necesario añadir la librería JavaMail incluida en src/resources/Libraries/mail.jar