#include <stdio.h> // Biblioteca para printf e scanf
#include <stdlib.h> //Biblioteca para o rand()
#include <time.h> // Biblioteca para srand(time(null))
int main()
{
srand(time(NULL));//Altera o valor do rand() a cada inicialização do programa;
// Essas são as variáveis que eu criei, jogo é a matriz com as respostas, contpar seira os acertos
// c1, c2... serão as coordenadas digitadas pelo usuário, pos1, pos2... serão as posição aleatórias
// para alocação dos pares de números na matriz jogo, e num será os numeros a formarem pares de 1 a 8
// jogador dirá de quem é a vez no momento, e pont1 e 2 são as pontuações dos respectivos jogadores 1 e 2
int jogo[4][4];
int a, b, contpar, c1, c2, c3, c4, pos1, pos2, pos3, pos4, num = 1;
contpar = 0;
int jogador, pont1, pont2;
jogador = 1;
pont1 = 0;
pont2 = 0;
// com esse loop, o programa inicializará todos os elementos da matriz jogo com 0, o que nos
// ajudará a posicionar os pares nessa mesma matriz no próximo passo
for (a = 0; a < 4; a++)
{
for (b = 0; b < 4; b++)
{
jogo[a][b] = 0;
}
}
// Esse loop é que vai atribuir os pares a matriz jogo. Ele gera quatro numeroa aleatórios de 0 a 3,
// exatamente como podemos usar numa matriz 4x4. A primeira condição garante que serão atribuídos valores de 1 a 8
// a espaços que não tenham sido preenchidos ainda. Considerando que o 0 é quando ele não foi preenchido, ele procura
// duas posições que valem 0 e com a segunda condição, ele garante que as duas posições não serão iguais.
// Quando ele acha duas posições que satisfazem essas condições, ele as preenchem com o número um, soma mais um a variável num, e procura duas coordenadas que ainda não tenham sido preenchidas
while (num <= 8)
{
pos1 = rand()%4;
pos2 = rand()%4;
pos3 = rand()%4;
pos4 = rand()%4;
if (jogo[pos1][pos2] == 0 && jogo[pos3][pos4] == 0)
{
if (pos1 != pos3 && pos2 != pos4)
{
jogo[pos1][pos2] = num;
jogo[pos3][pos4] = num;
num++;
}
}
}
// essa é a matriz que será mostrada para o usuário, que será preenchida toda com 0 e a medida que o jogador acertar os pares, esses pares serem substituídos na matriz esc, até ser toda preenchida e o jogo acabar.
int esc[4][4];
for (a = 0; a < 4; a++)
{
for (b = 0; b < 4; b++)
{
esc[a][b] = 0;
printf("%d ", esc[a][b]);
}
printf(" ");
}
/*
for (a = 0; a < 4; a++)
{
for (b = 0; b < 4; b++)
{
printf("%d ", jogo[a][b]);
}
printf(" ");
}
*/
while (contpar < 8) // contpar foi inicializado com 0, ou seja, quando contpar/número de acertos chegar a 8, o jogo acaba
{
printf("Vez do jogador %d ", jogador);
printf("Entre com uma cordenada(max = 4 4): ");
scanf("%d %d", &c1, &c2);
printf("O número da posicao eh %d ", jogo[c1 - 1][c2 -1]);
printf("Entre com outra coordenada: ");
scanf("%d %d", &c3, &c4);
printf("O número da posicao eh %d ", jogo[c3 - 1][c4 -1]);
// com isso foi pedido as coordenadas para localizar os pares na matris jogo
c1 = c1 - 1;
c2 = c2 - 1;
c3 = c3 - 1;
c4 = c4 - 1;
// essa parte do c1 = c1 - 1... é apenas um detalhe para facilitar na hora de digitar uma linha por coluna, é opcional
// Aqui nós temos nossas condições, se o valor da coordenada 1 for = a da coordenada 2 Ele vai somar um ponto pro jogador da vez,
// substituir o valor certo na matriz escondida, para o jogador ver os acertos e somar um ponto para o número de acertos. Depois ele vai
// reimprimir a matriz esc com os pares acertaos impressos
if (jogo[c1][c2] == jogo[c3][c4] && esc[c1][c2] == 0 && esc[c3][c4] == 0)
{
contpar++;
esc[c1][c2] = jogo[c1][c2];
esc[c3][c4] = jogo[c3][c4];
if (jogador == 1)
{
pont1++;
}
else if(jogador == 2)
{
pont2++;
}
for (a = 0; a < 4; a++)
{
for (b = 0; b < 4; b++)
{
printf("%d ", esc[a][b]);
}
printf(" ");
}
}
else
{
printf("Errou, tente de novo ");
jogador++; // se o jogador errar ele perde a vez
}
// Aqui foi como eu fiz para o jogador ser apenas 1 ou 2, toda vez que o jogador erra, soma-se um a variável jogador
// se o jog 1 erra, agora é o jog 2, porém se o jog 2 erra não vai para jog 3 pq com a condição abaixo, se jog > 2
// subtrai-se 2 do numero, ou seja 3 - 2 = 1, e volta a ser a vez do jog 1.
if (jogador > 2)
{
jogador = jogador - 2;
}
printf("Jogador 1: %d pts Jogador 2: %d pts ", pont1, pont2);
}
// aqui é apenas para dizer quem ganhou a partida
if (pont1 > pont2)
{
printf("Jogador 1 Venceu");
}
else if (pont2 > pont1)
{
printf("Jogador 2 Venceu");
}
else
{
printf("Empatou u.u");
}
}
Para escrever sua resposta aqui, entre ou crie uma conta
Compartilhar