[ Foro de Java ]

Ayuda con mazo de cartas!

02-Jul-2020 19:48
Invitado (Ro)
0 Respuestas

Hola! buenas tardes, tengo un problema con un juego de cartas que estoy haciendo,
cuando quiero repartir las cartas a los jugadores reparte bien, pero luego de que no haya mas cartas en el mazo sigue repartiendo igual, nose como hacer para solucionarlo, si alguien me podría dar una ayuda se lo agradecería. Les dejo el código:


//palos
public enum Palos {
     ORO,
     COPA,
     BASTO,
     ESPADA

  }


 

//la clase cartas
public class Cartas {

 
  public int numero;
  public Palos palo;
  public int valor;
 
 
  public Cartas(Palos palo, int numero, int valor) {
     this.palo = palo;
     this.numero = numero;
     this.valor = valor;
  }



  public String toString() {
     return numero + " de " + palo;
  }
 
  public int getValor() {
     return valor;
  }
}



//la clase mazo
public class Mazo {
  public  boolean mano=true;
  private Cartas[] cartas = new Cartas[40];
  public static int cartaActual = 0;
  public Mazo() {
     Palos[] palos = new Palos[4];
     palos = Palos.values();
     int carta = 0;
     for(int palo = 0; palo < palos.length; palo ++) {
        for(int valor = 1; valor <= 12; valor ++) {
           if (!(valor==8 || valor==9 )){
           cartas[carta++] = new Cartas(palos[palo],
                 valor,
                 getFigura(valor));
        }
     }
     }
     mezclar();
     
  }
 
  private int getFigura(int valor) {
     int respuesta = 0;
     switch(valor) {
     case 1: respuesta=1;
     break;
     case 2: respuesta=2;
     break;
     case 3: respuesta=3;
     break;
     case 4: respuesta=4;
     break;
     case 5: respuesta=5;
     break;
     case 6: respuesta=6;
     break;
     case 7: respuesta=7;
     break;
     case 10:
        respuesta = 8;
        break;
     case 11:
        respuesta = 9;
        break;
     case 12:
        respuesta = 10;
        break;
     }
     return respuesta;
  }
 
  public void mezclar() {
     Random r = new Random();
     for(int i = 0; i < cartas.length; i ++) {
        int pos = r.nextInt(40);
        Cartas aux = cartas;
        cartas = cartas[pos];
        cartas[pos] = aux;
     }
     cartaActual = 0;
  }
 
  public Cartas getCarta() {
     Cartas c=null;
     if (cartaActual >= cartas.length) {
        System.out.println("No hay mas cartas");
     }else {
        c= cartas[cartaActual ++];
       
  }
 
     return c;
}

//El metodo para repartir las cartas a los jugadores de la clase juego

  public void repartirJugadores() {  
       // Paso 1. Repartir cartas a jugadores
     for (int i = 0; i < 3; i++) {
        for (Jugador j: jugadores) {
           j.agregarCarta(mazoCarta.getCarta());
           
        }
     
     }
     
     
  }
 
 




Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...