Nim.java 3.85 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14
import java.util.Scanner;

public class Nim {
    
    int pila1;
    int pila2;
    int pila3;
    int turnoJugador;
    int cantidadFichas;

    public Nim(){
        pila1 =3;
        pila2 = 4;
        pila3 = 5;
15
        turnoJugador = 1;
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
    }
    public int getTurnoJugador(){
        return turnoJugador;
    }
    public void setTurnoJugador(int valor){
        turnoJugador = valor;
    }
    public int getPila(String pila){
        int devolvedor = 0;
        switch (pila) {
            case "A":
                devolvedor = pila1;
                break;
            case "B":
                devolvedor = pila2;
                break;
            
            case "C":
                devolvedor = pila3;
                break;
            default:
                devolvedor = 0;
                break;
        }
        return devolvedor;
    }
    //Remueve las fichas de las pilas
    public void quitarFichas(String pile , int number){
        switch (pile) {
            case "A":
                pila1 = pila1 - number;
                break;
            case "B":
                pila2 = pila2 - number;
                break;
            case "C":
                pila3 = pila3 - number;
                break;
            default:
                break;
        }
    }
    //Controla si sobran fichas para continuar con la partida
    public boolean controlPartida(){
        int contador = 0;
        if (pila1 > 0 || pila2 >0 || pila3 >0) {
            return true;            
        }else{
            return false;
        }    
    }
    //Se muestra el tablero en pantalla
    public void mostrarTablero(){
        System.out.println("A: " + pila1 + " B: " + pila2 + " C: " + pila3);
    }
    //Se cambia de turno en la jugada
    public void cambioDeTurnos() {
        if (getTurnoJugador() == 1) {
            setTurnoJugador(2);            
        }else{
            setTurnoJugador(1);
        }
    }

    public static void main(String[] args) {
        
        String lector = "";
        int fichas = 0;
        boolean check = false;
        Nim partida = new Nim();
        Scanner in = new Scanner(System.in);
        //Se muestra el tablero
        partida.mostrarTablero();
        while(partida.controlPartida()){
            System.out.println("Turno jugador" + partida.getTurnoJugador() + " :");
            //El jugador elige la columna(Se previene el ingreso de datos invalidos)
            while(!check){
                System.out.print("Elija una columna: ");
                lector = System.console().readLine();
                lector = lector.toUpperCase();
                if ((lector.equals("A") || lector.equals("B") || lector.equals("C")) && partida.getPila(lector) > 0){
                    check = true;
                }else {
                    System.out.println("Columna invalida, por favor intente de nuevo");
                    check = false;
                }
            }
            //El jugador elige la cantidad de fichas a retirar de la columna seleccionada(Se previene el ingreso de datos invalidos)
            while(check){
                System.out.print("Elija la cantidad de fichas a mover: ");
                fichas = Integer.parseInt(System.console().readLine());
                if (fichas > partida.getPila(lector)){
                    System.out.println("Cantidad invalida, por favor intente de nuevo");
                    check = true;
                } else {
                    check = false;
                };
            }
            partida.quitarFichas(lector , fichas);
            partida.mostrarTablero();
            partida.controlPartida();
            partida.cambioDeTurnos();
        }
        System.out.println("Fin de la partida");
        System.out.println("Gana = jugador" + partida.getTurnoJugador());
        partida.cambioDeTurnos();
        System.out.println("Pierde = Jugador" + partida.getTurnoJugador());
    }
}