0
I need to make a memory game and I’m in the first part of it, where you need to create a null board and then distribute pairs of numbers in random positions. What I did is give the user 3 options: easy, medium or hard game. My problem is that for the medium and hard options the program only shows the null matrix without showing the later matrix with the distributed values.
#include <stdio.h> // Biblioteca para printf e scanf
#include <stdlib.h> //Biblioteca para o rand()
#include <time.h> // Biblioteca para srand(time(null))
int nivel;
int a, b;
int i, j;
int Matr[4][4];
int count1, count2 = 0;
int x, y;
int num = 0;
int count16 = 0;
int main(){
printf("Escolha o nível do jogo, digite:\n 1 para fácil\n 2 para médio\n 3 para dificil\n");
scanf("%d", &nivel);
//----------------------NÍVEL FÁCIL NÍVEL FÁCIL NÍVEL FÁCIL--------------------------------------
if (nivel == 1){
for (i=0; i<4; i++) //Inicio da parte fácil
for(j=0; j<4; j++)
Matr[i][j] = 0;
for (i=0; i<4; i++){ //Essa parte mostra o tabuleiro para o usuário
for(j=0; j<4; j++)
printf("%3d", Matr[i][j]);
printf("\n");
}
while(num<9){
int count16 = 0;
srand(time(NULL));
while (count16 < 2){
x = rand() %4;
y = rand() %4;
if(Matr[x][y] == 0){
Matr[x][y] = num;
count16++;
}
}
num++;
}
for (x=0; x<4; x++){ //Essa parte mostra o tabuleiro para o usuário
for(y=0; y<4; y++){
printf("%3d\t", Matr[x][y]);
}
printf("\n");
} }
//----------------------NÍVEL FÁCIL NÍVEL FÁCIL NÍVEL FÁCIL--------------------------------------
//----------------------NÍVEL MÉDIO NÍVEL MÉDIO NÍVEL MÉDIO--------------------------------------
else if (nivel == 2){
for (i=0; i<6; i++) //Criação de uma matriz nula 6x6
for(j=0; j<6; j++)
Matr[i][j] = 0;
for (i=0; i<6; i++){ //Essa parte mostra o tabuleiro para o usuário
for(j=0; j<6; j++)
printf("%3d", Matr[i][j]);
printf("\n");
}
while(num<19){
int count16 = 0;
srand(time(NULL));
while (count16 < 2){
x = rand() %6;
y = rand() %6;
if(Matr[x][y] == 0){
Matr[x][y] = num;
count16++;
}
}
num++;
}
for (x=0; x<6; x++){ //Essa parte mostra o tabuleiro para o usuário
for(y=0; y<6; y++){
printf("%3d\t", Matr[x][y]);
}
printf("\n");
}
}
//---------------------NÍVEL MÉDIO NÍVEL MÉDIO NÍVEL MÉDIO--------------------------------------
//---------------------NÍVEL DIFÍCIL NÍVEL DIFÍCIL----------------------------------------------
else{
for (i=0; i<8; i++) //Criação de uma matriz nula 6x6
for(j=0; j<8; j++)
Matr[i][j] = 0;
for (i=0; i<8; i++){ //Essa parte mostra o tabuleiro para o usuário
for(j=0; j<8; j++)
printf("%3d", Matr[i][j]);
printf("\n");
}
int num = 0;
while(num<33){
int count16 = 0;
srand(time(NULL));
while (count16 < 2){
x = rand() %8;
y = rand() %8;
if(Matr[x][y] == 0){
Matr[x][y] = num;
count16++;
}
}
num++;
}
for (x=0; x<8; x++){ //Essa parte mostra o tabuleiro para o usuário
for(y=0; y<8; y++){
printf("%3d\t", Matr[x][y]);
}
printf("\n");
}
}
//------------------------NÍVEL DIFÍCIL NÍVEL DIFÍCIL----------------------------------------
}
If you declare your matrix as [4][4] how you want to use as [6][6]in the middle level or [8][8] in the hard level?
– anonimo
True, thank you for pointing that out. I’ll try to split the code into functions with one for each level and set a different matrix for each.
– Alan Vinicius Borato
One possibility is you exchange your global variables, not recommended in most cases, for local statements in each of the blocks or even make dynamic matrix allocation.
– anonimo