Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao trocar valores de matriz utilizando função rand();

Boa tarde, estou criando um jogo de campo minado a pedido do meu professor e estou tendo dificuldade ao gerar bombas aleatórias na minha matriz 9x9. Eu utilizo a função

rand(); com seed srand(time(NULL));

para gerar colunas e linhas aleatórias (i e j) que estão funcionando, mas no momento em que troco a matriz[i][j] pelo valor da bomba que e -1, sempre me retorna uma matriz com todas as bombas numa mesma linha. Segue o código do programa e um print do que acontece. http://prntscr.com/keomvl

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//variaveis gobais

//preview funcoes
void introducao();
void zeraMatriz();
void mostraMatriz();
void sorteiaBombas();

//funcoes
void introducao() {
    printf("*****************\n");
    printf("** MINESWEEPER **\n");
    printf("*****************\n");
}

void zeraMatriz(int campoMinado[9][9]) {
    int i = 0, j = 0;
    for (int i = 0; i < 9; ++i) {

        for (int j = 0; j < 9; ++j) {
            campoMinado[i][j] = 0;
        }

        j = 0;
    }

}

void mostraMatriz(int campoMinado[9][9]) {
    int i = 0, j = 0;
    for (int i = 0; i < 9; ++i) {

        for (int j = 0; j < 9; ++j) {
            printf("  %d", campoMinado[i][i]);
        }

        printf("\n");
        j = 0;
    }

}

void sorteiaBombas(int campoMinado[9][9]) {
    int i = 0, j = 0, bombas = 0;
    srand(time(NULL));
    while(bombas < 10) {
        printf("i = %d e j = %d\n", i, j);
        i = rand() % 10;
        j = rand() % 10;
        if(campoMinado[i][j] == 0)
        {
            campoMinado[i][j] = -1;
            bombas++;
        }
    }

}

int main() {
    introducao();

    int campoMinado[9][9];

    zeraMatriz(campoMinado);

    mostraMatriz(campoMinado);

    printf("\n");
    sorteiaBombas(campoMinado);

    printf("\n\n");
    mostraMatriz(campoMinado);
    //sortear bombas
    //calculardicas
    //mostrartabuleiro
    //loop
    //ler coordenadas
    //ler abrir ou bomba
    //se abrir
    //    -dica --> abrir apenas a casa
    //    -bomba --> morre
    //    -vazio    --> abrir e analisar vizinhos ate a dica
    //se marcar
    //    -marcar
    //ate ganhar ou morrer


    system("pause");
    return 0;
}

O erro acontece a partir da linha 47. Agradeço desde já

1 resposta
solução!

Acebei de descobrir o erro, estava usando campoMinado[i][i] ao invés de [i][j].