Pascalban egy másodpercig bekérni adatot?
Nem ugyanarról a timerről beszélünk mert amire én gondoltam ahhoz a hardveres megszakítás kell.
Ha történt billentyűnyomás akkor a lenyomott billentyű kódját a readkey() adja vissza.
Ezt az egy másodperces várakozást nem nagyon értem én sem. Miért nem lehet úgy csinálni, hogy megy a kígyó magától az utolsó irányba, amit a felhasználó megadott, aztán ha történik újabb esemény, billentyű lenyomás, akkor arra reagál. Ehhez nem sok kell, csak egy ciklusban automatikusan léptetni a kígyó pozícióját adott irányba illetve vizsgálni, hogy történt e billentyű leütés (KeyPressed), ha történt beolvasni a billentyű kódját (readkey) és ennek megfelelően cselekedni.
A kurzormozgató billentyűket így figyelheted Free Pascalban:
program kurzor;
{$mode objfpc}{$H+}
uses
crt;
var
ch : char;
begin
clrscr;
writeln('Kil‚p‚s - ESC');
window(2,2,79,23);
textbackground(4);
clrscr;
cursoroff;
repeat
ch:=ReadKey;
if ch=#0 then
begin
ch:=ReadKey;
case ch of
#72 : writeln('Fel'); //fel
#80 : writeln('Le'); //le
#77 : writeln('Jobb'); //jobbra
#75 : writeln('Bal'); //balra
end;
end;
until ch=#27;
window(1,1,80,24);
textbackground(0);
clrscr;
cursoron;
end.
Bármilyen lenyomott billentyű kódját pedig az alábbi programmal kérheted le (ugyancsak Free Pascal):
program billentyukod;
{$mode objfpc}{$H+}
uses
crt;
var
ch : char;
begin
textbackground(1);
clrscr;
write(' Kil‚p‚s - ESC | Billentyűk˘dok kiˇr s ra szolg l˘ program. | v0.1 ');
window(2,2,79,23);
textbackground(4);
clrscr;
repeat
repeat
until keypressed;
ch:=readkey;
if ch=#0 then ch:=readkey;
writeln(ord(ch));
until ch=#27;
window(1,1,80,24);
textbackground(0);
textcolor(7);
clrscr;
end.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!