Kezdőoldal » Számítástechnika » Programozás » Pascalban, hogy lehet nyilakka...

X483 kérdése:

Pascalban, hogy lehet nyilakkal "mozgatható" betűt készíteni?

Figyelt kérdés

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



2015. márc. 15. 14:32
 1/9 anonim ***** válasza:

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.

2015. márc. 15. 15:17
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:

#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_..

2015. márc. 15. 15:24
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:
Teljesen fölösleges egyetlen karakter miatt az egész képernyőt törölni... Ne úgy csináld, ahogy az első írja. Egyszerűen küldesz a terminálnak egy backspace karaktert, majd gotoxy()-nal ugrasz a következő pozícióra.
2015. márc. 15. 15:36
Hasznos számodra ez a válasz?
 4/9 coopper ***** válasza:
100%

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.

2015. márc. 15. 15:41
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:

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.

2015. márc. 15. 15:42
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:

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....

2015. márc. 15. 15:44
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:
Köszönöm mindenki válaszát, mind hasznos. :D Főleg coopper-ét de mindenkinek ment a zöld
2015. márc. 15. 16:26
 8/9 tabaki ***** válasza:

Kissé megkésve, de coopper programjának két módosítása:


[link]

[link]


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.

2015. márc. 15. 21:33
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:
Ment a zöld, köszönöm mindet.:D
2015. márc. 15. 21:53

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!