Skip to content

Instantly share code, notes, and snippets.

@pxpc2
Created September 6, 2018 03:34
Show Gist options
  • Save pxpc2/ea6ff06112355333ce732eae4c16151d to your computer and use it in GitHub Desktop.
Save pxpc2/ea6ff06112355333ce732eae4c16151d to your computer and use it in GitHub Desktop.
2
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