Ir para conteúdo
Fórum Script Brasil
  • 0

Sortear posições aleatórias numa matriz e trocá-las de valor


Victor Pasini

Pergunta

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[j] pelo valor da bomba = -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

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


A matriz campoMinado é uma matriz preenchida apenas com 0's (nula)

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

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

#define TAM 9

void sorteiaBombas(int campoMinado[TAM][TAM]) {
	int i, j, bombas = 0;
	
	while(bombas < 10) {
		i = rand() % 10;
		j = rand() % 10;
		
		if(campoMinado[i][j] == 0){	
			campoMinado[i][j] = -1;
			bombas++;
		}
	}
	

	
}

int main(){
    srand(time(NULL));
    
    int m[TAM][TAM] = {0}, i, j;
    
    sorteiaBombas(m);
    
	for (i=0; i<TAM; i++ ) {
	    for (j=0; j<TAM; j++) {
	        printf("%2d ", m[i][j]);
	    }
	    putchar('\n');    
	}
	
    putchar('\n');
    
    return 0;
}

srand somente se chama uma vez, ao inicio de main

Link para o comentário
Compartilhar em outros sites

  • 0
19 horas atrás, britivaldo disse:

Quanto

Se a matriz[TAM][TAM] seus índices são -1< (i,j) < TAM. 

j = rand () % TAM;    ✓

es vero. Algumas partes somente copiei do programa do autor, deveria ter prestado mais atenção.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...