FreePascal - Egyszerű 2D-s ütközésvizsgálat hiba (201), segítség (? )!
Adott a következő program, egy sima "mozgasd a négyzetet, és ha hozzáérsz a ponthoz írd ki" program, de amint elkezdek jobbra menni bezárja exitcode 201-es hibával... én nem találtam benne hibát, nem értem :/
program grafika;
uses wincrt,graph;
var
x,y,px,py:word;
valasztas:char;
procedure grstart;
var gd,gm:integer;
begin
gd:=detect;
initgraph(gd,gm,'C:\Fpc\2.2.0\bin\i386-win32');
if graphresult <> grok then write('Hibás grafika');
end;
procedure rajzol;
begin
setfillstyle(1,green);
//fillellipse(x,y,50,50);
bar(x,y,x+50,y+50);
end;
procedure torles;
begin
setfillstyle(1,black);
// fillellipse(x,y,50,50);
bar(x,y,x+50,y+50);
end;
procedure utkozes_vizsgalat;
begin
// {$RANGECHECKS OFF}
if ((px in [x..x+50]) and (py in [y..y+50])) then
begin
outtextxy(10,10,'Ütközés!');
putpixel(px,py,black);
px:=random(getmaxx);
py:=random(getmaxy);
putpixel(px,py,red);
end ;
end;
procedure mozgas;
begin
repeat
valasztas:=readkey;
if valasztas='w' then
begin
torles;
y:=y-5;
utkozes_vizsgalat;
rajzol;
end;
if valasztas='s' then
begin
torles;
y:=y+5;
utkozes_vizsgalat;
rajzol;
end;
if valasztas='a' then
begin
torles;
x:=x-5;
utkozes_vizsgalat;
rajzol;
end;
if valasztas='d' then
begin
torles;
x:=x+5;
utkozes_vizsgalat;
rajzol;
end;
until valasztas in ['e','E','w','a','s','d'];
end;
procedure pont;
begin
putpixel(px,py,red);
end;
begin
grstart;
x:=200;
y:=200;
px:=150;
py:=200;
rajzol;
pont;
repeat
mozgas;
pont;
until valasztas in ['e','E'];
end.
Köszönöm, a Step Over segített, a második jobbra menetnél itt: if ((px in [x..x+50]) and (py in [y..y+50])) akad ki :S
Amúgy kap értéket, amennyiben nyomsz egy gombot :)
De továbbra sem értem hogy miért akad ki 201-es hibakóddal.
Ilyen halmazos megoldással még nem találkoztam, de próbáld meg így:
if ( ( (px>x) and (px<x+50) ) and ( (py>y) and (py<y+50) ) )
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!