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

Problema em C

Discussão em 'Programação' iniciada por jorijo, 12 de Julho de 2006. (Respostas: 0; Visualizações: 1608)

  1. jorijo

    jorijo Power Member

    Boas!
    pessoal to com 1ligeiro problema num programa em c q contem movimento.
    o progrma q tento fzer eh parecido com o jogo "frogger" so q n consigo tornar o movimento do sapo independente do movimento dos carros, ou seja, quando carrego nas teclas direccionais do sapo o movimento dos carros para ate premir a tecla enter. se alguem puder ajudar agradeco... desculpam a extensao do post!


    void jogo(void)
    {
    /*declaração e inicialização de variáveis*/
    int carro1=0,carro2=0,parar=0,sapo_lin=32,sapo_col=40;
    int tecla;


    /*desenho do Tabuleiro de jogo*/
    c.fcolor(3);
    cenario();

    /*posiciona o sapo no jogo*/
    c.fcolor(1);
    gotoxy(sapo_lin,sapo_col);printf("%c%c",176,176);
    gotoxy(40,10);printf("Posi%c%co (tecla):",135,132);

    /*-----Jogo------*/
    do
    {
    for(int i=11;i<=79&&!parar;i++)
    {
    if(i<=69)
    {
    /*movimento Carro 1*/
    c.fcolor(2); /* atribui a cor vermelha ao Carro1*/
    gotoxy(27,i);printf("%c",219); /* desenha o caracter do Carro1*/
    gotoxy(28,i);printf("%c",219);
    for(int f=1;f<10000000;f++); /* movimento do carro1*/

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

    }
    else
    carro1=carro1+1;

    /*movimento Carro 2*/
    c.fcolor(0); /* atribui a cor azul ao Carro2*/
    gotoxy(23,80-i);printf("%c",219); /* desenha o caracter do Carro2*/
    gotoxy(22,80-i);printf("%c",219);
    for(f=1;f<10000000;f++); /* movimento do Carro2*/

    if (carro2==10) /* dimensão do Carro 2 - 10 caracateres*/
    {
    gotoxy(22,80-i+carro2);
    printf(" "); /* apaga a posicao anterior à dimensao do Carro2*/
    gotoxy(23,80-i+carro2);
    printf(" ");
    }
    else
    carro2=carro2+1;


    }
    /*garantir a estrutura do cenario*/
    c.fcolor(3);
    gotoxy(27,10);
    printf("%c",186);
    gotoxy(28,10);
    printf("%c",186);
    gotoxy(27,70);
    printf("%c",186);
    gotoxy(28,70);
    printf("%c",186);
    gotoxy(22,70);
    printf("%c",186);
    gotoxy(23,70);
    printf("%c",186);


    /*apaga desenho dos Carros após passar limites do cenário*/
    if (i>69)
    {
    gotoxy(27,i-carro1);
    printf(" ");
    gotoxy(28,i-carro1);
    printf(" ");
    gotoxy(22,80-i+carro2);
    printf(" ");
    gotoxy(23,80-i+carro2);
    printf(" ");
    }
    if(kbhit())
    {


    gotoxy(sapo_lin,sapo_col);
    printf(" ");
    fflush(stdin);

    gotoxy(40,27);
    printf(" ");
    c.fcolor(3);
    /*inserção da posição do sapo*/
    gotoxy(40,27);scanf("%d",&tecla);
    if(tecla==1&&sapo_col>11) /* anda uma coluna para a esquerda (-1 Coluna)*/
    sapo_col=sapo_col-1;
    else
    {
    if(tecla==2&&sapo_lin<32) /* anda uma linha para baixo (+1 Linha)*/
    sapo_lin=sapo_lin+1;
    else
    {
    if(tecla==3&&sapo_col<68) /* anda uma coluna para a direita (+1 Coluna)*/

    sapo_col=sapo_col+1;
    else
    {
    if(tecla==5) /* anda uma linha para cima (-1 Linha)*/
    sapo_lin=sapo_lin-1;
    }

    }
    }

    }
    //posicionar o sapo na posição que o utilizador escolheu*/
    if(((sapo_lin==30)||(sapo_lin==20)||(sapo_lin==25))&&tecla==5)
    sapo_lin=sapo_lin-1;
    if(((sapo_lin==30)||(sapo_lin==20)||(sapo_lin==25))&&tecla==2)
    sapo_lin=sapo_lin+1;
    c.fcolor(1);
    gotoxy(sapo_lin,sapo_col);printf("%c%c",176,176);

    //teste as condições de paragem: fim de jogo com sucesso e atropelamento*/
    if (((sapo_lin==27)&&(sapo_col<=i)&&(sapo_col>=i-carro1))||((sapo_lin==28)&&(sapo_col<=i)&&(sapo_col>=i-carro1))||((sapo_lin==22)&&(sapo_col>=80-i-1)&&(sapo_col<=80-i-1+carro1))||((sapo_lin==23)&&(sapo_col>=80-i-1)&&(sapo_col<=80-i-1+carro2)))
    {
    gotoxy(19,45);printf("E era uma vez um Sapo...",144);
    parar=1;
    }

    if(sapo_lin==19)
    {
    gotoxy(19,55);printf("PARAB%cNS",144);
    parar=1;

    }
    }
    }while(!kbhit());/* enquanto não clicar numa tecla, o movimento do carro nao para, no entanto*/
    getch(); /* para sair e voltar ao menu principal*/
    }
     

Partilhar esta Página