1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Movimento aleatorio em C

Discussão em 'Programação' iniciada por jorijo, 16 de Agosto de 2006. (Respostas: 5; Visualizações: 1154)

  1. jorijo

    jorijo Power Member

    boas! pessoal alguem me pode explicar como atraves da funcao rand posso criar movimento aleatorio horizontalment?
    ja percebi o funcionamento da funcao pa gerar os numeros aleatorios so q n sei como aplicala pa gerar movimento.
    consigo gerar movimento horizontal sem ser aleatorio atraves dum ciclo mas agr qeria metelo aleatorio.
     
  2. Seavoices

    Seavoices Power Member

    Não consegues fazer o Rand ficar atribuido à variável que define a posição horizontal, mantendo o valores que queres na Vertical encadeado com uma função FOR?
     
  3. jorijo

    jorijo Power Member

    c.fcolor(2); /* atribui a cor vermelha*/
    gotoxy(27,i);printf(
    "%c",219); /* desenha o caracter */
    gotoxy(28,i);printf("%c",219);
    for(int f=1;f<80000000;f++); /* movimento*/

    if (carro1==5) /* dimensão*/
    {
    gotoxy(27,i-carro1);printf(
    " "); /* apaga a posicao anterior à dimensao*/
    gotoxy(28,i-carro1);printf(" ");

    }
    else
    carro1=carro1+1;

    assim eh como gero o movimento... tavas a dizer pa fzer i=rand()?
     
  4. jorijo

    jorijo Power Member

    ja consegui criar o movimento aleatorio so q o problema agora eh q nao consigo controlar a velocidade... alguem sabe porq?
     
  5. Mas o que é que tu pões aleatório? A velocidade ou a posição?

    Se o movimento é aleatório não deves ter controlo sobre a velocidade!!!
     
  6. CoolZero

    CoolZero Power Member

    Realmente, se tens um movimento aleatório de posição, a velocidade é, do mesmo modo aleatória, a não ser que tenhas controlo sobre o tempo.

    Quer isto dizer... a distancia percorrida é a velocidade * tempo, e a distancia está relacionada com a posição:

    distancia = v *t
    posicaoActual = posicaoAnterior + distancia

    Agora, se dizes q a posiçãoActual variou de forma aleatória, é o mesmo que dizeres que ou a velocidade variou da mesma forma aleatória, ou então foi o tempo que variou de forma aleatória, dado que a posição depende únicamente destes dois factores. Por isso, se tiveres controlo sobre o tempo, tens de fazer o tempo variar proporcionalmente à variação da posição (distância), ou então tens de fazer a velocidade variar.

    Assim, se tens uma variação na distância, a qual chamamos d'.

    v = d'/ t, assim tens a variação que houve na velocidade, para que o carro tenha percorrido aquela distância aleatória num espaço de tempo que é sempre igual.

    t = d'/v, assim tens uma variação no tempo, mantendo a velocidade constante. Penso que esta última opção não é o q pretendes.


    Resumindo: uma variação aleatória na posição actual do carro é, consequentemente, uma variação aleatória da velocidade deste, ou uma variação no tempo. Para perceberes melhor o que seria uma variação no tempo, é, por exemplo, estares a mostrar a posição actual do carro de segundo a segundo e depois mostrares 5 segundos depois. Tudo isto partindo do princípio q tens um movimento contínuo, ou seja, que o teu carro não se tele-transporta :P
     

Partilhar esta Página