Pascalban, hogy lehet nyilakkal "mozgatható" betűt készíteni?
Kicsit furán hangzik a kérdés, de arra gondolok, hogy elindítjuk a programot amit írtunk és csak egy db "O" betűt ír ki. Ha megnyomjuk a lefele nyilat akkor eggyel lejebb megy, ha a felfelét akkor eggyel feljebb, ha jobbra akkor eggyel jobbrább, ha a balt akkor eggyel balrább. (Mint pld. a snake-ben csak itt ha elengedjük a gombot akkor meg áll az O betű és nem megy tovább)
Tudom picit furán tettem fel a kérdést, de jobban nem tudom. :D
1. Tárolod a kurrens pozíciót (x,y, egész számok)
2. Csinálsz egy ciklust, ami törli a képernyőt, majd kiírja adott pozícióra a betűt.
3. Még a cikluson belül csinálsz egy readkey-t, és a kapott karakter alapján módosítod a koordinátákat.
#1 vagyok
Megjegyzem, ugyanaz a mechanizmus, amit pár napja a menüs kérdésednél leírtam.
http://www.gyakorikerdesek.hu/szamitastechnika__programozas_..
Szia.
AZ első által leirtakhoz, annyit tennék hozzá, hogy a readkey 0-át ad vissza speciális jelek esetén (nyilak, ins, del, PgUp, PgDn, stb) ilyenkor mégegyszer meg kell hivni a valós értékhez.
Ebből viszont az következik, hogy nem csak a nyilakkal irányitható - modjuk programozás szervezéstől is függ a dolog - hanem a nyilak kódjának megfelelő ASCII kódokkal is (72='H' (Fel nyil), 75='K' (<- nyil), 77='M' (-> nyil), 80='P' (Le nyil)).
Itt egy program (exe és pas) ESC-re kilép : [link]
Egy gond van vele : a 24,80-as pozició ha ott van a betű
akkor nem jól dolgozik.
Sok sikert.
üdv.
Meglehetősen elnagyolt de egy ilyet alkottam:
Program betumozgat;
uses crt;
const
felnyil=#72;
lenyil=#80;
balnyil=#75;
jobbnyil=#77;
var
ch:char;
x,y:byte;
begin
x:=1;
y:=1;
repeat
clrscr;
gotoxy(x,y);
write('b');
ch:=readkey;
if ch=#0 then begin
case ch of
felnyil:
if (y>1) then dec(y) else y:=1;
lenyil:
if (y<25) then inc(y) else y:=25;
balnyil: if (x>1) then dec(x) else x:=1;
jobbnyil: if (x<79) then inc(x) else x:=79;
end;
end;
until(ch=#27);
end.
Escape megnyomására kilép a program.
Amit nem tudok, hogy a Windows DOS alatti ablaka is 80x25 módú -e mint a régi szép időkben DOS alatt a text képernyő, de elvileg valami getvideomode megmondja....
Kissé megkésve, de coopper programjának két módosítása:
Megjegyzések:
A jobb alsó ficak rendellenes működését az okozza, hogy a kurzor automatikusan ugrik a következő pozícióra. Ez ellen nem tudtam tenni, ezért az alsó sort egyszerűen letiltottam.
A CursorOff/CursorOn csak Free Pascalban, Windows-konzolban működik, egyébként elhagyandó.
A key változó inicializálását elhagytam. Warningol ugyan a fordító, de nem érdekes, mert billentyűnyomáskor azonnal kap értéket.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!