Boa noite!
Finalmente o programa tá funcionando, falta documentar e fazer uns arremates.
Mas eu não entendo porque ele não está tirando a primeira carta da pilha, e nem porque não está escrevendo os resultados do método tem cartas que é um boolean.
public class Carta {
private String nome; // Define variável para armazenar o nome de cada carta
private String naipe;// Define variável para armazenar o nome de cada naipe
public Carta(String nome, String naipe) { //Método carta determina as variáveis nome e naipe
this.nome = nome;
this.naipe = naipe;
}
public String getNome() {
return nome;
}
public String getNaipe() {
return naipe;
}
}public class Baralho {
int quantidade=70;
int index=0;
Carta[] cartas = new Carta[quantidade];
public Baralho() {
String nomes[] = {"Às", "Dois", "Três", "Quatro", "Cinco", "Seis", "Sete", "Oito", "Nove", "Dez", "Valete", "Dama", "Rei","Coringa"};
String naipes[] = {"Copas", "Espadas", "Paus", "Ouros"};
int cont = 0;
for (int j = 0; j < naipes.length; j++) {
for (int i = 0; i < nomes.length ; i++) {
if ((nomes[i]!="Coringa") && (naipes[j]!="Coringa")) {
cartas[cont] = new Carta(nomes[i], naipes[j]);
}
if (nomes[i]=="Coringa") {
String aux = naipes[j];
naipes[j]="Coringa";
cartas[cont] = new Carta(nomes[i], naipes[j]);
naipes[j] = aux;
}
cont++;
}
quantidade = cont;
}
}
//Embaralha cartas
public void embaralha( ) {
for (int i=0 ; i < quantidade; i++) {
Carta aux = cartas[i];
int proxima = (int)(Math.random() * quantidade);
cartas[i] = cartas[proxima];
cartas[proxima] = aux;
}
}
public void imprimeBaralho() {
int i;
for (i = 0; i < quantidade; i++) {
System.out.print(cartas[i].getNome()+" ");
System.out.println(cartas[i].getNaipe());
}
}
public Carta daCarta() {
if (quantidade>0 || cartas[quantidade]!=null) {
quantidade--;
return cartas[index++];
}
return null;
}
public boolean temCarta() {
if(quantidade > 0) {
System.out.println(quantidade);//conferindo se está entrando na condição
return true;
}
else {
return false;
}
}
}
public class Aplicacao {
public static void main(String[] args) {
// TODO Auto-generated method stub
Baralho carteado = new Baralho();
carteado.temCarta();
carteado.imprimeBaralho(); // imprime para verificar se a saida está correta
System.out.println("");
carteado.embaralha();
carteado.imprimeBaralho();
System.out.println("");
carteado.daCarta();
carteado.imprimeBaralho();
System.out.println("");
carteado.temCarta();
}
}
Saida do programa
56
Às Copas
Dois Copas
Três Copas
Quatro Copas
Cinco Copas
Seis Copas
Sete Copas
Oito Copas
Nove Copas
Dez Copas
Valete Copas
Dama Copas
Rei Copas
Coringa Coringa
Às Espadas
Dois Espadas
Três Espadas
Quatro Espadas
Cinco Espadas
Seis Espadas
Sete Espadas
Oito Espadas
Nove Espadas
Dez Espadas
Valete Espadas
Dama Espadas
Rei Espadas
Coringa Coringa
Às Paus
Dois Paus
Três Paus
Quatro Paus
Cinco Paus
Seis Paus
Sete Paus
Oito Paus
Nove Paus
Dez Paus
Valete Paus
Dama Paus
Rei Paus
Coringa Coringa
Às Ouros
Dois Ouros
Três Ouros
Quatro Ouros
Cinco Ouros
Seis Ouros
Sete Ouros
Oito Ouros
Nove Ouros
Dez Ouros
Valete Ouros
Dama Ouros
Rei Ouros
Coringa Coringa
Dez Ouros
Dois Espadas
Às Ouros
Dois Paus
Seis Ouros
Dama Copas
Às Espadas
Cinco Ouros
Nove Copas
Dama Espadas
Coringa Coringa
Valete Copas
Cinco Paus
Rei Espadas
Às Copas
Dez Espadas
Sete Copas
Dois Copas
Coringa Coringa
Oito Paus
Quatro Copas
Dama Ouros
Três Paus
Rei Paus
Cinco Espadas
Dois Ouros
Quatro Paus
Valete Paus
Nove Ouros
Sete Ouros
Três Copas
Sete Paus
Valete Espadas
Às Paus
Dez Copas
Rei Copas
Nove Paus
Dama Paus
Três Ouros
Sete Espadas
Quatro Ouros
Seis Copas
Coringa Coringa
Coringa Coringa
Quatro Espadas
Rei Ouros
Seis Paus
Três Espadas
Oito Ouros
Nove Espadas
Seis Espadas
Valete Ouros
Dez Paus
Oito Copas
Oito Espadas
Cinco Copas
Dez Ouros
Dois Espadas
Às Ouros
Dois Paus
Seis Ouros
Dama Copas
Às Espadas
Cinco Ouros
Nove Copas
Dama Espadas
Coringa Coringa
Valete Copas
Cinco Paus
Rei Espadas
Às Copas
Dez Espadas
Sete Copas
Dois Copas
Coringa Coringa
Oito Paus
Quatro Copas
Dama Ouros
Três Paus
Rei Paus
Cinco Espadas
Dois Ouros
Quatro Paus
Valete Paus
Nove Ouros
Sete Ouros
Três Copas
Sete Paus
Valete Espadas
Às Paus
Dez Copas
Rei Copas
Nove Paus
Dama Paus
Três Ouros
Sete Espadas
Quatro Ouros
Seis Copas
Coringa Coringa
Coringa Coringa
Quatro Espadas
Rei Ouros
Seis Paus
Três Espadas
Oito Ouros
Nove Espadas
Seis Espadas
Valete Ouros
Dez Paus
Oito Copas
Oito Espadas
55