Olá pessoal estou fazendo um jogo de cartas, mas parei numa parte que consigo achar o caminho…
O problema que tenho que resolver é esse:
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
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!
Primeira mente criei essas classes:
public class Carta
{
protected int naipe = 0,nc = 0;
public Carta(int naipe, int numero)
{
this.naipe = naipe;
this.nc = numero;
}
public int obtemValorCarta()
{
return nc;
}
public String obtemCarta()
{
return naipe +" "+ nc;
}
public String mostraDados()
{
String ct = "Naipe : "+ naipe +" "+"Valor da carta: "+ nc+"\n";
return ct;
}
}
public class Baralho
{
protected Carta baralho[];
protected int np = 0, n = 0, topo = 0;
public Baralho(int nbar)
{
baralho = new Carta[52 * nbar];
int i=0;
for(int x = 1; x <= nbar; x++)
for (np = 1; np <= 4; np ++)
for (n = 1; n <= 13; n++)
{
baralho[i] = new Carta(np, n);
i++;
}
}
public void embaralhaCartas()
{
Carta aux;
int pos;
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 Carta retiraCartas()
{
Carta ct;
ct = baralho[topo];
topo++;
return ct;
}
}
public class Jogador
{
protected Carta cartas[];
protected Jogador jog[];
private int i = 0;
public Jogador(int nj)
{
cartas = new Carta[6];
jog = new Jogador[nj];
}
public void pegaCarta(Baralho b)
{
cartas[i] = b.retiraCartas();
i++;
}
}
public class Jogo
{
protected Baralho b;
protected Jogador jog[];
protected int i = 0;
public void Jogo(int nb, int nj)
{
jog = new Jogador[nj];
b = new Baralho(nb);
}
public void embaralhaCartas()
{
b.embaralhaCartas();
}
public void joga() // este poderia ser o metodo que controla o jogo
{
}
}
O (s) meu (s) problema (s) é (são):
Tenho um array de jogadores e um array de cartas.Como faço para colocar o array de cartas dentro de cada
posição do array de jogador e pegar cartas do baralho e colocar dentro desse de cartas e depois como faço
para acessar o array de cartas de cada jogador para verificar a pontuação?
Valeuuuu!!!