nim.java 4.09 KB
Newer Older
Angel Zarate committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
package JUEGOS;

import java.util.Scanner;
import java.util.Stack;

public class nim {

    int pilaa;
    int pila1;
    int pila2;
    int turnoJugador;
    int cantidadFichas;
    public nim(){
       pilaa =3;
        pila1 = 4;
        pila2 = 5;

        turnoJugador = 1;

    }
    public int getTurnoJugador(){
        return turnoJugador;
    }
    public void setTurnoJugador(int valor){
        turnoJugador = valor;
    }
    public int getPila(String pila){
        int devuelve = 0;
        switch (pila) {
            case "A":
                devuelve = pilaa;
                break;
            case "B":
                devuelve = pila1;
                break;

            case "C":
                devuelve = pila2;
                break;
            default:
                devuelve = 0;
                break;
        }
        return devuelve;
    }
    //Remueve las fichas de las pilas
    public void quitarFichas(String pile , int number){
        switch (pile) {
            case "A":
                pilaa = pilaa - number;
                break;
            case "B":
                pila2 = pila1 - number;
                break;
            case "C":
                pila2 = pila2 - number;
                break;
            default:
                break;
        }
    }
    //Controla si sobran fichas para continuar con la partida
    public boolean controlPartida(){
        int contador = 0;
        if (pilaa > 0 || pila1 >0 || pila2 >0) {
            return true;
        }else{
            return false;
        }
    }
    //Se muestra el tablero en pantalla
    public void mostrarTablero(){

        System.out.println("A: " + pilaa + " B: " + pila1 + " C: " + pila2);
    }
    //Se cambia de turno en la jugada
    public void cambioDeTurnos() {
        if (getTurnoJugador() == 1) {
            setTurnoJugador(2);
        }else{
            setTurnoJugador(1);
        }
    }
    public static void main(String[] args) {

        Scanner teclado = new Scanner(System.in);
        System.out.println("jugador 1,ingrese su nombre");
        String turnoJugador = teclado.next();

        System.out.println("jugador 2,ingrese su nombre");
        String turnoJugador1 = teclado.next();

        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 pila");
                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());
    }
}