Juego Piedra, papel y tijera en Java

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.

Etiquetas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *