Pessoal, alguém tem ideia de como fazer um jogo de dominó em c, ter parte gráfica em c é opcional, não tenho ideia por onde começar, sei que precisar ter um conceito de lista, pilha e fila…
alguém podendo me ajudar? grato
Esse é um jogo razoavelmente complexo, fica difícil explicar em um post.
Um ponto importante a definir é: contra quem será o jogo? Se for contra a CPU, você precisará de uma IA simples (que joga caso tenha uma peça, e não joga caso não tenha). Se for um jogador contra outro, precisará definir como ocultar as peças (ao contrário de um jogo de damas, por exemplo, onde todas as peças estão visíveis o tempo todo), ou ignorar totalmente esse problema (ao menos inicialmente).
Sem entrar em muita complexidade, você pode criar um struct para armazenar peças. O struct teria um campo para cada lado da peça, com o valor como um inteiro (de zero a 6):
struct {
int lado1;
int lado2;
}
Pra simplificar, pode desenhar a mesa linearmente no console/prompt de comando. Algo como:
[ 0 | 4 ][ 4 | 5 ][ 5 | 2 ][ 2 | 6 ][ 6 | 6 ][ 6 | 3 ]
Você pode criar uma função que “printa” uma peça ao receber um struct de peça como parâmetro, e fazer um loop nas peças da mesa.
As peças na mesa poderiam ser armazenadas em uma lista comum, mas nesse caso talvez uma fila com duas pontas seja mais interessante (para permitir verificar e jogar dos dois lados mais facilmente).
As peças nas mãos dos jogadores poderiam ser listas comuns. A mesma função que printa as peças na mesa pode exibir as peças na mão do jogador.
Daí uma partida poderia ser definida (de forma simplificada) assim:
- todas as 28 peças são embaralhadas;
- cada jogador recebe X peças (14 / 7, dependendo de quantos jogadores há);
- repita: ===
– exibe as peças do jogador;
– turno do jogador;
– verifica vitória (jogador com zero peças);
– turno dos adversários;
– verifica vitória (adversário com zero peças); - fim repita ====
Você pode deixar um comando para exibir a mesa ou a mão do jogador a qualquer momento, pra facilitar.
Grosso modo, acho que isso te serve de base.
Abraço.
Então seria a pessoa contra o jogador, mas no caso eu pensei em fazer uma struct, mas não entendi como vou embralhar, vou ter que usar randon?
Os detalhes de implementação ficam por sua conta
Mas sim, usar Random é uma forma de embaralhar as peças.
Abraço.