FreePascalban miért nem megy az adatbekérés ezzel a kóddal?
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;
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.
#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?
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.
#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).
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!