Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

temudo

Preencher matriz com um random

Mensagens Recomendadas

temudo    0
temudo

Boa tarde , tenho um problema , eu tenho de fazer uma matriz vazia , ou seja com espacos em que depois acrescente 200 peixes aleatoriamente pela matriz , e 25 tubaroes aleatoriamente tb pela matriz .. alguem me consegue ajudar? a matriz é de 85*40 .

void matriz()
{
    int k,j,a,maxrand;
    char peixeA;

    maxrand=200;
    a=0;

    for (k=0 ; k<45 ; k++)
    {
         printf("\n");
   
         for (j=0 ; j<80 ; j++)
         {
             printf(" ");
         }
       
    }  
  
  
    printf ("C");
    scanf ("%c",&peixeA);

    for (a++ ; a<200 ; a++)
    {   
        a =  rand()  % maxrand;
    }
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
TheDark    0
TheDark

O que tu queres é que a função devolva uma matriz de 80x45 com 200 peixes e 25 tubarões em posições aleatórias?

Podes receber como argumento um array bidimensional com essa dimensão. Para isso altera a função para void matriz(char mat[][40]).

Depois, o que estás a fazer é a escrever espaços no ecrã. Tens que escrever os espaços é no array que recebes como argumento. Em vez dos printfs que tens no 1º conjunto de fors, elimina o 1º printf e substitui o 2º por mat[ j ][ i ] = ' '; de forma a encheres o array de espaços.

Finalmente, não percebi muito bem que ideia tiveste no último for. O for em si está bem, mas a linha de código que está lá dentro não.

O que tens que fazer é arranjar duas variáveis do tipo int para guardar o resultado de duas chamadas a rand(); uma para as linhas (%85) e outra para as colunas (%40). Depois, ver se a posição dada por essas coordenadas já contém um peixe. Se não tiver, colocas lá um peixe; se tiver, voltas a chamar rand().

Depois é repetir para os tubarões.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
temudo    0
temudo

Se me pudesses fazer so essa funcao mais ou menos para eu ver como é , é que depois ainda tenho de fazer com que os peixes se movam , e se se moverem X passos reproduzem-se ou comem-se ..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
temudo    0
temudo

Já está a dar obrigado :P :P . mas nao sei é fazer agora para preencher com 200 peixes e 25 tubaroes agora e mete-los a sorte .

void ecran_jogo()
{   
    int i,j;

    for (i=0;i<80;i++)
    {
        for (j=0;j<45;j++)
        {
            printf("%d",matriz[i][j]);
        }
   }
}

void aleatorio()
{
    int i,j;
   
    for (i=0;i<80;i++)
    {
        for (j=0;j<45;j++)
        {
            matriz[i][j]=rand()%8;
        }
    }
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
TheDark    0
TheDark

O que tens que fazer é arranjar duas variáveis do tipo int para guardar o resultado de duas chamadas a rand(); uma para as linhas (%85) e outra para as colunas (%40). Depois, ver se a posição dada por essas coordenadas já contém um peixe. Se não tiver, colocas lá um peixe; se tiver, voltas a chamar rand().

Depois é repetir para os tubarões.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
temudo    0
temudo

void inserir()
{
   int A,B;
   gotoxy(30,46);
   printf("C");
   scanf("%d",&A);
   inserir2(A,'A');
   gotoxy(30,47);
   printf("A");
   scanf("%d",&B);
   inserir2(B,'B');
}

void inserir2(int quantidade,char tipo)
{
   int i,x,y,done;
   for (i=0;i<quantidade;i++)
   {
       done=0;
       do
       {
           x=rand()%80;
           y=rand()%45;
           if (matriz[x][y]==0)
           {
               matriz[x][y]=tipo;
           }
           else
           {
               x=rand()%80;
               y=rand()%45;
           }
       }while(done=0);
   }

}

podes-me dizer o que esta mal sff? ou se nao for pedir muito , fazeres-me o codigo so pra inserir os 200 peixes e os 25 tubaroes .

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg
        done=0;
        do
        {

            /* código que não altera `done` */

        }while(done=0)

Este código está "preso" num ciclo infinito.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade