-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jogo_da_memoria.txt
221 lines (187 loc) · 7.01 KB
/
Jogo_da_memoria.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <windows.h>
#include <conio.h>
#include <time.h>
#include <unistd.h>
/*
* UNIVERSIDADE FEDERAL DO ABC
* PROJETO 01 - PROGRAMAÇÃO ESTRUTURADA - PROF. DR. WAGNER TANAKA
* GRUPO 06 - TURMA B1 NOTURNO
JOÃO VICTOR RIBEIRO MARTINS VIEIRA RA: 11201810775
LUCAS KIKKAWA PERPETUA RA: 11201810415
LUCAS CAMARGO SPINELI RA: 11201932454
NATHALYA DOS SANTOS RA: 11201810440
YASMIN MARTINEZ PERES RA: 11201720162
* Programa: Jogo da Memória em Linguagem C.
*/
/* Protótipos */
//int nivelDificuldade (int matriz[][]);
int inputUsuario_Resultados(int linha, int coluna, int jogo[4][4]);
void aleatorio(void);
//GerarNumerosAleatorios -> Gerar numeros aleatorios da matriz
//InputUsuario -> Mostrar o numero que está na posição que o usuario escolheu
//Respostas
/*
int nivelDificuldade (void){
int matriz[0][0];
int level_user = 0;
printf("Primeiro, escolha o nivel de dificuldade para o seu jogo:\n\n1-Fácil\n\n2-Medio\n\n3-Dificil");
scanf("%d", &level_user);
while(level_user != 1 || level_user != 2 || level_user != 3){
printf("O número escolhido não é válido! Tente novamente.");
scanf("%d", &level_user);
}
if (level_user==1){
matriz[2][2]; //Devemos ter uma matriz par para que o jogo funcione
//int linha = 2, coluna = 2;
}
else if (level_user==2){
matriz[4][4];
//int linha = 4, coluna = 4;
}
else if (level_user==3){
int matriz[6][6];
//int linha = 6, coluna = 6;
}
return matriz;
}
*/
int inputUsuario_Resultados(int linha, int coluna, int jogo[4][4]){ // linha e coluna vem da funcao NivelDificuldade
// matriz jogo -> gerado pela funcao nivelDificuldade e preenchida aleatoriamente
int matriz_Usuario[linha][coluna]; // matriz preenchida pelo usuario, usada para comparar com matriz jogo
int jogada = 0; // jogada do usuario
int acertos = 0; // quantidade de acertos de pares de memoria do usuario
int erros = 0;
int c1, c2, c3, c4;
for(int i=0; i<4;i++){
for(int j = 0; j<4; j++){
matriz_Usuario[i][j] = 0;
}
}
while (jogada < 2*linha) // contpar foi inicializado com 0, ou seja, quando contpar/número de acertos chegar a 8, o jogo acaba
{
printf("Entre com uma coordenada (Exemplo: 4 4): ");
scanf("%d %d", &c1, &c2);
printf("O numero da posicao [%d] [%d] eh %d\n",c1,c2, jogo[c1 - 1][c2 -1]);
printf("Entre com outra coordenada: ");
scanf("%d %d", &c3, &c4);
printf("O numero da posicao [%d] [%d] eh %d\n",c3,c4, jogo[c3 - 1][c4 -1]);
// com isso foi pedido as coordenadas para localizar os pares na matriz jogo
c1 = c1 - 1;
c2 = c2 - 1;
c3 = c3 - 1;
c4 = c4 - 1;
// 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] && matriz_Usuario[c1][c2] == 0 && matriz_Usuario[c3][c4] == 0)
{
acertos++;
jogada++;
matriz_Usuario[c1][c2] = jogo[c1][c2];
matriz_Usuario[c3][c4] = jogo[c3][c4];
for (int a = 0; a < linha; a++)
{
for (int b = 0; b < coluna; b++)
{
printf("%d ", matriz_Usuario[a][b]);
}
printf("\n");
}
}
else
{
printf("Errou, tente de novo\n");
erros++;
}
if(erros == 3){
printf("Numero maximo de erros atingidos. Voce perdeu :(\n");
break;
}
}
printf("Voce acertou %d pares e errou %d", acertos, erros);
return 0;
}
int main(void){
aleatorio();
return 0;
//funcao gerar numeros aleatorios do nivel que o usuario escolheu
}
void aleatorio(void){
int matriz[4][4];
int intervalo = 30, c;
int contador = 0;
int numAleatorio = 0;
int temporaria = 0;
int linhaAleat = 0;
int colunaAleat = 0;
int tam = 4;
int tempo = 20;
printf("Decore os numeros exibidos em ate 20 segundos e depois digite os numeros na \nordem que foram exibidos.\n");
printf("Apos 3 tentativas incorretas o jogo sera encerrado ");
printf("Aperte ENTER para iniciar o jogo.\n");
do{
c = getch();//para o usuario apertar o enter
}while (c != 13);//(13 é o código do enter), enquanto ele não apertar o enter, o jogo não comeca
/*if(dificuldade == 1){
intervalo = 10;
j=10;
tam = 2;
}
else if (dificuldade == 2){
intervalo = 20;
j=15;
tam = 4;
}
else if(dificuldade == 3){
intervalo=30;
j=20;
tam = 6;
}
*/
numAleatorio = (rand() % intervalo); // Definir o primeiro numero aleatorio, antes de entrar no for
//For criado para preencher as posiçoes da matriz, preenchendo 1 numero aletorio em duas posições em sequencia
for(int i=0;i<tam;i++){
for(int j=0;j<tam; j++){
if (contador < 2) // Contador para verificar se já há 1 par do numero aleatorio
{
matriz[i][j] = numAleatorio; // Atribuição do numero aleatorio
contador = contador + 1;
}
else // Caso o contador esteja em 2, o numero ja esta em 2 posições
{
numAleatorio = (rand() % intervalo); // Gerar outro numero aleatorio
matriz[i][j] = numAleatorio; // Atribuição do numero aleatorio
contador = 1; // Reiniciar contador
}
}
}
// Trecho para embaralhar as posiçoes da matriz
for ( int i = 0; i < tam; i++ ) { // Passar por todas as linhas
for ( int j = 0; j < tam; j++ ) { // Passar por todas as colunas
linhaAleat = rand( ) % tam; // Gerar uma posição de linha aleatoria na matriz
colunaAleat = rand( ) % tam; // Gerar uma posição de coluna aleatoria na matriz
temporaria = matriz[ i ][ j ]; // Guardar o numero posicionado na matriz (i e j)
// Atribuir onde esta posicionado o valor da posição aleatoria
matriz[ i ][ j ] = matriz[ linhaAleat ][ colunaAleat ];
matriz[ linhaAleat ][ colunaAleat ] = temporaria; // Trocar o valor com a posição aleatoria
}
}
do{
system ("cls");//limpar a tela
printf ("Decore os numeros abaixo em %d\n\n\n", tempo);
tempo--;//diminuindo o tempo
for(int i=0;i<tam;i++){
for(int j=0;j<tam; j++){
printf ("%d\t", matriz[i][j]);
}
printf("\n");
}
sleep(1);
}while(tempo>0);
system ("cls");
inputUsuario_Resultados(tam, tam, matriz);
printf ("\n\n");
}