Witam. Na koniec stycznia muszę napisać pewien mały programik, nad którym od dzisiejszego rana męczę się. Konkretnie hodzi o kawałek kodu z ReadKey. Na początku rysuję w oknie grafikę, następnie sprawdzam klawisze strzałkowe (góra, dół) za pomocą ReadKey, na ich podstawie zmieniam wartość liczbową zmiennej a z kolei na jej podstawie "podświetlam" pozycje w menu.
Tutaj zaczynają się schody. Dlaczego? Program narysuje to co ma narysować ale dalej czeka. Nie reaguje na wciskane klawisze. Z tego, co zauważyłem, po wyłączenia okna z grafiką, konsola zaczyna dopiero "czytać" klawisze i reaguje na końcowy ENTER.
Jakieś sugestie?
Kod:
program szablon;
uses crt, graph;
const
ster : Integer = VGA;
tryb : Integer = VGAHI;
Maus = $33;
procedure inicjuj_grafike;
begin
InitGraph(ster, tryb, 'D:/Program Files/2.4.0/bin/');
end;
procedure rysuj_logo;
begin
SetColor(Blue);
Arc(150,100,0,330,50);
Line(200,100,150,100);
Line(150,100,194,125);
Circle(165,80,7);
SetTextStyle(4,horizdir,6);
OutTextXY(220,100,'PatMan');
end;
function przelacz_opcje(stan:Integer):Integer;
begin
if(stan = 0) then
begin
SetColor(White);
OutTextXY(245,260, 'Nowa Gra');
SetColor(LightBlue);
OutTextXY(260,280,'Wyniki');
OutTextXY(260,300,'Koniec');
end;
if(stan = 1) then
begin
SetColor(White);
OutTextXY(260,280, 'Wyniki');
SetColor(LightBlue);
OutTextXY(245,260,'Nowa Gra');
OutTextXY(260,300,'Koniec');
end;
if(stan = 2) then
begin
SetColor(White);
OutTextXY(260,300, 'Koniec');
SetColor(LightBlue);
OutTextXY(245,260,'Nowa Gra');
OutTextXY(260,280,'Wyniki');
end;
end;
procedure rysuj_menu;
var
stan : Integer;
klawisz : char;
begin
SetColor(blue);
SetTextStyle(4,horizdir,4);
OutTextXY(245,215,'MENU');
Line(200,250,420,250);
SetTextStyle(4,horizdir,2);
SetColor(LightBlue);
OutTextXY(245,260,'Nowa Gra');;
OutTextXY(260,280,'Wyniki');
OutTextXY(260,300,'Koniec');
stan := 0;
repeat
klawisz := Readkey;
case klawisz of
#72 :
begin
stan := stan + 1;
przelacz_opcje(stan);
end;
#80 :
begin
stan := stan - 1;
przelacz_opcje(stan);
end;
else
stan := stan;
end;
until klawisz = #13;
end;
procedure zamknij_grafike;
begin
readln;
CloseGraph;
end;
begin
inicjuj_grafike;
rysuj_logo;
rysuj_menu;
zamknij_grafike;
end.