Ejercicio de Programación Orientada a Objetos. Herencia y Clases abstractasClases a implementarRevolverJugadorJuegoPrograma Principal
Fecha | Versión | Descripción |
---|---|---|
21/01/2025 | 1.0.0 | Versión inicial |
En este ejercicio vamos a implementar el juego de la Ruleta Rusa al cual se va a jugar de forma automática.
Para ello vamos a implementar una serie de clases que se encargarán de realizar el juego.
La clase revolver deberá disponer de la siguiente estructura:
posición actual: Posición del tambor donde se dispara, puede que esté la bala o no.
posición bala: La posición del tambor donde se encuentra la bala.
Funciones de clase (no es un método tradicional)
generaNumeroAleatorio(int minimo, int maximo) Esta función será de uso interno de la clase. No podrá ser invocada desde fuera de la clase. Nos permitirá generar un número aleatorio entre el mínimo y el máximo, ambos incluidos. Será utilizada en el constructor de la clase para inicializar los atributos.
Constructor Revolver(): El constructor, no recibe ningún parámetro pero se encarga de asignar aleatoriamente a posición actual y posición bala, una posición, que evidentemente será aleatoria cada una de ellas.
disparar(): Este método devolverá un booleano. Devolverá true si posición actual es la misma que posición bala. Cada vez que se dispare cambiará la posición del tambor. Para ello deberás invocar la siguiente función que se especifica, siguienteBala().
siguienteBala(): Cambia a la siguiente posición del tambor.
toString(): Se encarga de mostrar la posición del tambor y dónde se encuentra la siguiente bala.
La clase jugador deberá disponer de la siguiente estructura:
id: Representa el número del jugador, empieza en 1.
nombre: Se conforma del texto "Jugador" + id del jugador: Jugador 1
vivo: Nos va a permitir saber si el jugador se encuentra vivo.
Constructor Jugador(int id): Se encargará de inicializar los atributos id, nombre y vivo. Por defecto el jugador se encontrará vivo.
isVivo(): Este método nos devolverá si el jugador está vivo o no.
disparar(Revolver r): Con este método que recibe un Revolver, el jugador se apunta y se dispara, si la bala se dispara, el jugador muere. Invocará el método de revolver encargado de disparar, si devuelve true, actualizaremos el atributo vivo del jugador a false. Mostraremos por pantalla el nombre del jugador y si ha muerto o está vivo.
Esta va a ser la clase principal que se invocará en el programa principal. Se va a conformar con la siguiente estructura:
jugadores: Consistirá en un Array o ArrayList de jugadores.
revolver: Un atributo que contará con un Revolver.
Constructor Juego(int njugadores): El constructor se encargara de lo siguiente. Creará un array de njugadores o bien generará el ArrayList de jugadores. Debes tener en cuenta que al generar este Array o ArrayList tendrás que crear njugadores de Objetos de tipo Jugador almacenando estos en la estructura seleccionada. Es recomendable que se utilice una función para realizar esto, la cual se describirá en el siguiente método, crearJugadores(). Al parámetro revolver le asignará un objeto de tipo Revolver.
crearJugadores(): Se encargará de crear un objeto de tipo jugador bien en el Array o el ArrayList.
ronda(): Este método se encargará de lo siguiente: Cada jugador se apunta y se dispara, se informara del estado de la partida (El jugador se dispara, no ha muerto en esa ronda, etc.) Se invocará al método disparar de jugador para cada uno de los jugadores que tiene el atributo jugadores. La ronda finalizará cuando el jugador este muerto.
finJuego(): Cuando un jugador muere devuelve true.
El número de jugadores será decidido por el usuario, pero debe ser entre 1 y 6. Si no está en este rango, por defecto será 6.
En cada turno uno de los jugadores, dispara el revólver, si este tiene la bala el jugador muere y el juego termina.
En la clase main crea una partida. Un posible ejemplo de main:
xpublic class Main {
public static void main(String[] args) {
Juego juego = new Juego(6);
while( !juego.finJuego() ){
juego.ronda();
}
System.out.println("El juego ha terminado");
}
}
Ejecución de este:
Realiza la entrega del proyecto en la tarea. Se cuidadoso con las clases.