Olá pessoal sou novo em programação e tenho que fazer um jogo de cartas da seguinte forma:
Laboratório I
Trabalho prático
Jogo de cartas
Neste jogo podem participar dois ou mais jogadores (um é sempre o “banco” e os restantes são jogadores). Cada jogador retira sucessivamente cartas de um baralho, até o máximo de 6 cartas. O objetivo de cada jogador é conseguir conjuntos de cartas conforme descrito abaixo.
• seqüência da cartas
• trinca (3 cartas de mesmo número)
• pares (2 cartas de mesmo número)
O Jogo pressupõe a existência de um “banco” que deverá ser simulado pelo programa, assim como os jogadores. Observação: alguns alunos me consultaram e eu permiti que os jogadores fossem usuários do programa e não simulados pelo computador; podem escolher a forma como querem fazer esta parte do trabalho.
Regras do Jogo
No início do jogo, o “banqueiro” embaralha as cartas e as coloca em um monte com a face virada para baixo.
Cada jogador retira do monte uma carta e a guarda. Todos os jogadores fazem isto em cada jogada. Após a primeira rodada, os jogadores podem optar por retirar ou não mais uma carta de cima do monte. O número máximo de cartas que um jogador pode retirar, no total, é de 6 cartas.
A retirada de cartas termina quando não existir nenhum jogador que queira retirar mais cartas do monte.
Sugestão para lógica a ser empregada pelo jogador para decidir que tipo de conjunto de cartas ele deve formar:
• Quanto ele retira uma carta, ele deve inseri-la no conjunto de cartas que lhe trará mais pontos. Veja como será feita a pontuação logo abaixo. Por exemplo, se o jogador já tem uma determinada carta, e tira uma nova carta com o mesmo número, ele deve escolher montar uma dupla ou uma trinca. Quanto o jogador tiver duas opções, sendo que as duas lhe darão a mesma pontuação, deve ser feita uma escolha aleatória.
A seguir, jogadores mostram as suas cartas e é feita a soma da pontuação de cada jogador.
Um jogador é desclassificado se não conseguiu montar nenhum dos conjuntos de cartas previstos no jogo.
No início do jogo deve determinado o número de baralhos que serão usados durante o jogo.
Na tabela a seguir estão as regras para pontuação:
Conjunto Pontuação
seqüência da cartas Se o conjunto tiver 3 ou menos cartas:
1 ponto por carta
Se o conjunto tiver mais de 3 cartas:
2 pontos por carta
trinca (3 cartas de mesmo número) 2 pontos para cada trinca
par (3 cartas de mesmo número) 1 ponto para cada par
Na contabilização da pontuação final de cada jogador, as cartas que não fizerem parte de nenhum dos conjuntos de cartas previstos no jogo devem ocasionar a subtração de 1 ponto (por carta) do total de pontos do jogador.
O jogador com maior pontuação ganha o jogo!
Até agora criei 2 classes a Cartas e Baralho:
- Classe Carta
public class Carta
{
protected int naipe = 0,nc = 0;
public Carta(int naipe, int numero)
{
this.naipe = naipe;
this.nc = numero;
}
public String obtemCarta()
{
String ct ="Naipe: "+ naipe +"\n"+ "Número da carta: "+ nc;
return ct;
}
}
- Classe Baralho:
public class Baralho
{
private Carta baralho[];
private int np = 0, n = 0, topo = 0;
public Baralho(int nbar) // Construtor de Baralho
{
baralho = new Carta[52 * nbar];
int i=0;
for (int z = 1; z <= nbar; z++)
for (np = 1; np <= 4; np ++)
for (n = 1; n <= 13; n++)
{
baralho[i] = new Carta(np, n);
i++;
}
}
public void embaralhaCartas()
{
int pos;
Carta aux;
for (int i = 0; i < baralho.length; i++)
{
pos = 0 + (int) (Math.random() * baralho.length);
aux = baralho[i];
baralho[i] = baralho[pos];
baralho[pos] = aux;
}
}
public void retiraCartas()
{
Carta carta;
carta = baralho[topo];
topo++;
System.out.println(carta.obtemCarta());
}
}