Hola a todos, hoy os voy a explicar como hacer el juego del piedra papel y tijera en Java.
Todos conocemos el famoso juego del piedra, papel y tijera. Piedra gana a tijera, tijera gana a papel y papel gana a piedra.
Lo vamos a hacer en Java con una simple clase y un enumerado.
Empecemos con el enumerado, creando cada una de las manos disponibles, asociandoles un indice (0=piedra, 1=papel y 2=tijera).
public enum Mano { PIEDRA(0), PAPEL(1), TIJERA(2); private int index; private Mano(int index) { this.index = index; } public int getIndex() { return index; } }
Ahora vamos con la clase, la llamaremos PiedraPapelTijera.
Vamos a usar la misma estrategia que la tabla de tipos de pokemon, una tabla con filas y columnas donde la fila sera el jugador 1 y la columna el jugador 2. El contenido de sera 1,0 y -1, siendo 1 que la fila gana sobre la columna, el 0 es empate y el -1 es que la fila pierde sobre la columna.
He aquí un ejemplo:
Por ejemplo, en la posición [0,1] es -1, es decir, que piedra pierde contra papel.
Esta sería nuestra clase:
public class PiedraPapelTijera { private int[][] tablero; public PiedraPapelTijera() { this.inicializarTablero(); } private void inicializarTablero() { /* PIEDRA PAPEL TIJERA PIEDRA 0 -1 1 PAPEL 1 0 -1 TIJERA -1 1 0 */ int[][] t = { {0, -1, 1}, {1, 0, -1}, {-1, 1, 0} }; this.tablero = t; } public int ganador(Mano j1, Mano j2) { return this.tablero[j1.getIndex()][j2.getIndex()]; } }
Tenemos el método ganador que nos devuelve el resultado.
Veamos un ejemplo práctico:
public class Ejercicio_POO_DDR_22 { public static void main(String[] args) { Mano j1 = Mano.PAPEL; Mano j2 = Mano.PAPEL; PiedraPapelTijera ppt = new PiedraPapelTijera(); int ganador = ppt.ganador(j1, j2); switch(ganador){ case 0: System.out.println("Empate"); break; case 1: System.out.println("J1 gana"); break; case -1: System.out.println("J2 gana"); break; } } }
Este es el resultado:
Os dejo aquí el Github del proyecto para seguirlo
Os dejo un vídeo donde lo explico paso a paso:
Y otro video haciendolo en interfaz grafica:
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta