Oi.
Estou a fazer um trabalho em que tenho de criar uma série de bases para um jogo de cartas.
Para o naipe das cartas tenho um enumeradopublic enum Naipe {QUALQUER, COPAS, ESPADAS, PAUS, OUROS}
public enum Valor {QUALQUER, NULO, DOIS, TRES, QUATRO, CINCO, SEIS, SETE, OITO, NOVE, DEZ, J, Q, K, AS}
Tenho ainda uma classe Carta onde tenho que fazer uma série de construtores e de comparações entre cartas.
Um dos construtores tem que construir uma carta apartir de uma string (por exemplo: "CK") para um Rei de Copas.public class Carta {
private Naipe Naipe;
private Valor Valor;
public Carta (String teste){
char[] teste2 = teste.toCharArray();
switch(teste2[0]){
case 'C' : this.Naipe = Naipe.COPAS;
case 'E' : this.Naipe = Naipe.ESPADAS;
case 'O' : this.Naipe = Naipe.OUROS;
case 'P' : this.Naipe = Naipe.PAUS;}
switch(teste2[1]){
case '2' : this.Valor = Valor.DOIS;
case '3' : this.Valor = Valor.TRES;
case '4' : this.Valor = Valor.QUATRO;
case '5' : this.Valor = Valor.CINCO;
case '6' : this.Valor = Valor.SEIS;
case '7' : this.Valor = Valor.SETE;
case '8' : this.Valor = Valor.OITO;
case '9' : this.Valor = Valor.NOVE;
case '1' : this.Valor = Valor.DEZ;
case 'J' : this.Valor = Valor.J;
case 'Q' : this.Valor = Valor.Q;
case 'K' : this.Valor = Valor.K;
case 'A' : this.Valor = Valor.AS;}
}
Isto foi o que eu me lembrei de fazer, mas o código fica horrível e não suporta possíveis erros de entrada. Imaginando que eu fazia
new Carta("P10")
new Carta("P11")
Alguém me ajuda a melhorar este código? Preciso de uma alternativa para cortar a string em duas partes e melhorar o reconhecimento e atribuição de cada atributo.