Jump to content
brunoalves5

Ciclo repeat com delay

Recommended Posts

brunoalves5

Boas, eu estou a tentar fazer uma especie de jogo, em que objectos descem no ecra e um outro objecto em baixo tem de se desviar deles, a minha duvida e a seguinte

Para esse objecto se desviar tem que se clicar em duas teclas (uma para a direita e outra para a esquerda), mas eu nao sei como ler essas teclas, uma vez que o utilizador pode nao querer que o objecto se mexa

Como faço isso?


O cérebro é uma coisa fantástica, toda a gente devia ter um.www.hypescience.comKeep learning...

Share this post


Link to post
Share on other sites
nunopicado

Boas

Tens de fazer uma leitura dupla com o readkey.

Tipo isto:

var
   ch:char;


begin
   .
   .
   .
   repeat
      ch:=readkey;
   until (ch=#0) or (ch=#27);
   case ch of
      #0:case readkey of       // #0 é o caracter que precede as teclas especiais. Lendo o caracter seguinte (com o readkey dentro do case), tem-se o codigo da tecla
                #72:Go_Up;        // Código da Seta para Cima
                #80:Go_Down;   // Código da Seta para Baixo
                #75:Go_Left;      // Código da Seta para a Esquerda
                #77:Go_Right;    // Código da Seta para a Direita
      #27:Encerra_Jogo;       // Código de uma tecla comum (neste caso o escape) que dispensa o prefixo #0, pelo que é testado no primeiro case
   end;
end.

Os códigos 72, 80, 75 e 77 foram escritos de cabeça, de quando usava muito isto. Se houver algum que não corresponda avisa que eu tento procurar nas minhas sources antigas, mas acho que não me enganei...


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
nunopicado

Já agora, assim já podes pescar sem precisar do peixe! lolol

Program VerCodigos;
var
   ch:char;
   Codigo:string;
Begin
      clrscr;
      repeat
           Write('Pressione uma tecla para saber o código: ');
           ch:=readkey;
           case ch of
                #0:begin
                           Str(ord(readkey),Codigo);
                           Codigo:='#0 + #'+Codigo;
                     end;
           else begin
                           Str(ord(ch),Codigo);
                           Codigo:='#'+Codigo;
                  end;	  
           end;
           writeln(codigo);
           writeln;
     until ch=#27;
End.

Executa este programa. Depois é só pressionar a tecla que queiras saber o código e ele mostra-te...

NOTA: Teclas "ultra-especiais"  ;) como o control, alt e shift não são detectadas por este método!


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.