My matrices do not appear on the screen in C

Asked

Viewed 25 times

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?

  • 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.

  • 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.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.