Created
September 6, 2018 03:34
-
-
Save pxpc2/ea6ff06112355333ce732eae4c16151d to your computer and use it in GitHub Desktop.
2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package br.unb; | |
import java.util.ArrayList; | |
import java.util.Collections; | |
/** | |
* @author gabronsio | |
*/ | |
public class Gabs | |
{ | |
// constantes para guardar o total de naipes e total de tipos | |
private static final int TNAIPES = 4, TTIPOS = 13; | |
// utilizamos uma lista para guardar as cartas para poder usar da biblioteca Collections para embaralhar | |
private static ArrayList<Carta> cartas = new ArrayList<>(); | |
// vetor para guardar os naipes | |
private static String[] naipes = | |
{ | |
"Paus", "Copas", "Espadas", "Ouro" | |
}; | |
// vetor para guardar os tipos, onde o char 1 representa o número 10 | |
private static char[] tipos = | |
{ | |
'A', '2', '3', '4', '5', | |
'6', '7', '8', '9', '1', 'J', 'Q', 'K' | |
}; | |
public static void main(final String... args) | |
{ | |
// esse primeiro loop vai garantir que passe por todos os naipes | |
for (int i = 0; i < TNAIPES; i++) | |
{ | |
// o segundo loop vai passando, para cada naipe, por todos os tipos | |
for (int j = 0; j < TTIPOS; j++) | |
{ | |
// aqui instanciamos um novo objeto carta e adicionamos a lista | |
Carta c = new Carta(naipes[i], tipos[j]); | |
cartas.add(c); | |
} | |
} | |
Collections.shuffle(cartas); // ESSE MÉTODO EMBARALHA AS CARTAS | |
// um foreach pela lista para listar os elementos no console | |
for (final Carta c : cartas) | |
{ | |
System.out.println(c.toString()); | |
} | |
} | |
static class Carta | |
{ | |
String naipe; // cada carta tem seu naipe | |
char tipo; // cada carta tem seu tipo | |
int valor; // cada carta terá seu valor calculado | |
/** | |
* Construtor da classe Carta para não precisar de setar o naipe e o valor e o tipo separados, | |
* assim pelo construtor a gente já atribui tudo de uma vez. | |
* Se não fosse usar construtor, tinha que escrever uma linha para cada | |
* @param naipe O naipe da carta | |
* @param tipo o char representate do tipo da carta | |
*/ | |
Carta(final String naipe, final char tipo) | |
{ | |
this.naipe = naipe; | |
this.tipo = tipo; | |
setValor(); | |
} | |
/** | |
* Método para atribuir valor às cartas de acordo com seu tipo | |
* onde família real (tipos J, Q ou K) recebem 10, A recebe 11 | |
* e o resto é igual ao seu tipo, ou seja, tipo 2 tem valor 2, | |
* e o tipo 1 se refere ao 10, logo recebe 10 | |
*/ | |
void setValor() | |
{ | |
if (this.tipo == 'A') valor = 11; | |
else if (this.tipo == 'J' || this.tipo == 'Q' || this.tipo == 'K' | |
|| this.tipo == '1') | |
valor = 10; | |
else valor = Integer.parseInt(String.valueOf(this.tipo)); | |
} | |
/** | |
* Override do toString de objetos para formatar as caracteristicas de cada carta | |
* no formato TIPO de NAIPE, valor: VALOR pontos. | |
* exemplo: J de Paus, valor: 10 pontos. | |
* @return a string com as características formatadas | |
*/ | |
@Override | |
public String toString() | |
{ | |
String t = Character.toString(this.tipo); | |
if (t.equals("1")) t += "0"; | |
return t + " de " + naipe + ", valor: " + valor + " pontos."; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment