• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

maquina

campo minado - C - random

5 mensagens neste tópico

linguagem C

então, meu professor pediu um programa de campo minado (classico) nada simples , vi uns por ai na net e esse é bemm mais complicado

--1--

para sortear as bombas pensei algo como isso

será que tem como fazer assim (EXEMPLO)

o cara pede um campo minado 4x5 e 5 bombas

eu pego esses numeros e peço pro rand gerar uma ordem de numeros de 1 a (nL x nC=20) distribuídos de acordo com a semente e coloco num vetor e depois coloco na mesma ordem an matriz sendo q os numeros 1 até o nB(numero de bombas=5) fica igual a 'B' e o resto como sem ser bomba

tem como fazer isto?? como?

---2---

outra maneira nao sei se boa seria sortear algumas colunas e sortear uma posicao e la colocar uma bomba

alguem com + experiencia teria noção do melhor a se fazer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Com um array (tab) de duas dimensões, n x m, podes gerar números aleatórios (x) entre 0 e n*m-1 e colocar as bombas em tab[ x ] (como se tab fosse um array de uma dimensão). Provavelmente vais precisar de castings, mas vai funcionar.

Também podes converter o valor de forma a funcionar em arrays de duas dimensões:

tab[x/m][x%m]

Penso que isto deve funcionar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

char ** sorteiaBombas(int nL, int nC, int nB, int semente)
{
  char Bombas[nL+4][nC+4];
  int *p= Bombas;
  int a, b, nB2=0; 
      while (nB2<nB)  {
         a = rand() %nL;
         b = rand() %nC;
         /* +1 para o rest ficar entre 1 e nL e +1 pela matriz ser maior pra contar as bombas*/
         /*+2 pelo aumento da matriz*/
         if (Bombas[a+4][b+4]!='B') {
            Bombas[a+4][b+4]='B';
            nB2++;         
                                    }
                      }     
  return **p;
}

ja tentei de todas maneiras possiveis retornar sempre da algum erro

a funcao tem q ter aquele nme e tem q retornar esta matriz Bombas, só nao sei qual eh o modo adequado de fazer isto

alguem sabe??

---2---

typedef struct lista {
   int info;
   struct lista *prox;
   } Lista;

Lista* p; /*lista auxiliar*/
     l->info=p->info;
     li=p->prox;
     p=p->prox;
     co=p->prox;

ta achando erro nessa parte porque??

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se queres devolver o array da bombas, então este não deve ser local à função. Ou o alocas dinamicamente ou passas-lo como argumento da função.

E esse tipos de dados não estão correctos, nuns lados tens chars, noutros ints...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora