Kezdőoldal » Számítástechnika » Programozás » FreePascal - Egyszerű 2D-s...

FreePascal - Egyszerű 2D-s ütközésvizsgálat hiba (201), segítség (? )!

Figyelt kérdés

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.


2011. okt. 17. 20:58
 1/4 anonim ***** válasza:
Próbáld úgy, hogy a Step Over és Trace Into gombokat (~F7-8) nyomogatva végigmész a programon és ahol felbukkan a hiba ott mégegyszer megnézed. Tessék bátran használni a hibajavító funkciókat!
2011. okt. 17. 21:04
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:
Fogalmam sincs, de a "valasztas" változó nem kap értéket.
2011. okt. 17. 21:06
Hasznos számodra ez a válasz?
 3/4 A kérdező kommentje:

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.

2011. okt. 17. 21:41
 4/4 anonim ***** válasza:

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

2011. okt. 17. 22:28
Hasznos számodra ez a válasz?

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!