Kezdőoldal » Számítástechnika » Programozás » FreePascalban miért nem megy...

Progizo kérdése:

FreePascalban miért nem megy az adatbekérés ezzel a kóddal?

Figyelt kérdés

Próbálok egy kétjátékos módú színezős-területfoglalós játékot készíteni, de nem reagál a gombnyomásra a programom. Azt hiszem, a billentyűlenyomásos keypressed-readkey-es résznél lehet valami logikai hiba, de nem tudok rájönni, hogy mi. Itt a kódrészlet:


repeat

if keypressed then gomb:=readkey;

case gomb of

'w': jatekos[0].yhely:=jatekos[0].yhely-1;

's': jatekos[0].yhely:=jatekos[0].yhely+1;

'a': jatekos[0].xhely:=jatekos[0].xhely-1;

'd': jatekos[0].xhely:=jatekos[0].xhely+1;

end;

for i:=0 to 1 do

putpixel(jatekos[i].xhely,jatekos[i].yhely,jatekos[i].szine);

until gomb=#27;

closegraph;



2015. nov. 27. 19:16
 1/6 A kérdező kommentje:

Itt pedig a teljes kód (+ még ha valaki már megkérdezte itt, hogy ilyen kétjátékos módú játékhoz hogyan lehet egyszerre legalább két gomb lenyomását kezelni FP-ban, akkor linkeljétek már be a kérdéshez vezető hivatkozást, mert az is érdekel):


program jatekocska;

uses crt,graph;

type jatekosok=record

xhely,yhely: integer;

szine: byte;

end;

var gd,gm: integer;

gomb: char;

i: byte;

jatekos: array[0..1] of jatekosok;

begin

gd:=detect;

gm:=0;

initgraph(gd,gm,'');

jatekos[0].xhely:=5;

jatekos[0].yhely:=5;

jatekos[0].szine:=5;

jatekos[1].xhely:=getmaxx-5;

jatekos[1].yhely:=5;

jatekos[1].szine:=10;

for i:=0 to 1 do

putpixel(jatekos[i].xhely,jatekos[i].yhely,jatekos[i].szine);

repeat

if keypressed then gomb:=readkey;

case gomb of

'w': jatekos[0].yhely:=jatekos[0].yhely-1;

's': jatekos[0].yhely:=jatekos[0].yhely+1;

'a': jatekos[0].xhely:=jatekos[0].xhely-1;

'd': jatekos[0].xhely:=jatekos[0].xhely+1;

end;

for i:=0 to 1 do

putpixel(jatekos[i].xhely,jatekos[i].yhely,jatekos[i].szine);

until gomb=#27;

closegraph;

end.

2015. nov. 27. 19:19
 2/6 ejbenjaro ***** válasza:
A uses crt helyett használd a uses wincrt-t, így elvileg grafikus módban is fog menni a karakterbeolvasás a billentyűzetről.
2015. nov. 28. 07:33
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:

#2.: Köszönöm szépen a segítő válaszodat, mely alapján most már megfelelően működik a programom.

Ezek szerint akkor felejtsem el a crt egységet, és a wincrt-t használjam helyette, hiszen Windows alatt és alá fejlesztek?

2015. nov. 28. 09:26
 4/6 ejbenjaro ***** válasza:

Nem kell elfelejteni, de ha grafikus programot készítesz, akkor a sima crt unit egyes eljárásait, függvényeit elfelejtheted.

Javasolnám, hogy ha már Free Pascallal foglalkozol, akkor bátran használd a Lazarus fejlesztő környezetet. Ez ilyen Delphi szerű vizuális fejlesztőrendszer, amit a Free Pascalra alapoztak. Sokkal könnyebb benne Windowsra fejleszteni, mint simán Free Pascalban, főleg ha windowsos grafikus kezelőfelülettel megáldott programot készítesz.

2015. nov. 28. 12:02
Hasznos számodra ez a válasz?
 5/6 SimkoL ***** válasza:
Ritka 'randa' kód :( ránézésre is, az Inc, Dec nem ismerős valahonnan kapiból ?
2015. nov. 28. 19:03
Hasznos számodra ez a válasz?
 6/6 A kérdező kommentje:

#4.: A Lazarust is kipróbáltam már, de a FreePascal egyelőre még barátságosabbnak tűnik, hiszen ott megkapom tisztán a szövegszerkesztő ablakot és nincs már eleve beleírva sok ismeretlen kóddarab.

Persze így is készítettem már egy próbaprogramot vele, amiben volt két gomb, meg egy szövegmező, ami kiírta, hogy melyik van lenyomva éppen. Szóval jó lenne, ha tudnék "lazarusul", próbálkozom is még majd vele, de ha jól tudom, az inkább Delphi utasításokat használ (a PutPixel-t pl. nem ismerte fel).


#5.: Mit csináljak, ha egyszer a GYK nem ismeri fel a FP behúzásait. Pedig úgy szebb lenne. Az inc-dec páros ismerős, hogyne: az első értéknövelésre, míg a második csökkentésre való (tehát pl. a változó:=változó+1; kóddarab cserélhető le vele).

2015. nov. 29. 09:14

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!