Kezdőoldal » Számítástechnika » Programozás » FPC, SDL, program miért lép...

Krisztián2545 kérdése:

FPC, SDL, program miért lép ki, ha az egeret egy bizonyos oszlophoz teszem?

Figyelt kérdés

Ha az egér balról a kb. 5.-ik oszlopnal van akkor miért lép ki?


SDL: [link]


kód:


Program jatekteszt2;

Uses sdl,sdl2_image,sdl2,sajat;

Var window1:PSDL_window;

texture1,texture2:PSDL_texture;

rect1,rect3:PSDL_Rect;

renderer:PSDL_renderer;

sdlevent:PSDL_event;

sdlpoint:PSDL_Point;

kilep,fel,le,jobra,balra:boolean;

x,y:integer;


Begin


If SDL_Init(sdl_init_video)<0 then halt;


window1:=sdl_createwindow('jatekteszt',0,0,1366,768,sdl_window_fullscreen_desktop);

if window1=nil then halt;


renderer:=sdl_createrenderer(window1,-1,0);

if renderer=nil then halt;


texture1:=img_loadtexture(renderer,'c:\emberke.png');

if texture1=nil then halt;


texture2:=img_loadtexture(renderer,'c:\paja.jpg');



New(rect3);


With rect3^ do begin

x:=0; y:=0; w:=50; h:=50;

end;

New(sdlevent);

New(sdlpoint);

sdlpoint^.x:=25; sdlpoint^.y:=25;


Repeat


If sdl_pollevent(sdlevent)=1 then begin

If sdlevent^.key.keysym.sym=13 then kilep:=true;

If sdlevent^.type_=sdl_keydown then begin

if sdlevent^.key.keysym.sym=119 then fel:=true;

if sdlevent^.key.keysym.sym=115 then le:=true;

if sdlevent^.key.keysym.sym=100 then jobra:=true;

if sdlevent^.key.keysym.sym=97 then balra:=true;

end;

If sdlevent^.type_=sdl_keyup then begin

if sdlevent^.key.keysym.sym=119 then fel:=false;

if sdlevent^.key.keysym.sym=115 then le:=false;

if sdlevent^.key.keysym.sym=100 then jobra:=false;

if sdlevent^.key.keysym.sym=97 then balra:=false;

end;

If sdlevent^.type_=sdl_mousemotion then begin x:=sdlevent^.motion.x; y:=sdlevent^.motion.y; end;


end;


If fel=true then rect3^.y:=rect3^.y-1;

If le=true then rect3^.y:=rect3^.y+1;

If jobra=true then rect3^.x:=rect3^.x+1;

If balra=true then rect3^.x:=rect3^.x-1;

SDL_Renderclear(renderer);

SDL_Rendercopyex(renderer,texture1,nil,rect3,360-(szog(rect3^.x+25,rect3^.y+25,x,y)-90),sdlpoint,SDL_FLIP_NONE);

SDL_Renderpresent(renderer);


Until kilep;


SDL_destroytexture(texture1);

SDL_destroytexture(texture2);

SDL_destroyrenderer(renderer);

SDl_destroywindow(window1);

Dispose(sdlevent);

Dispose(rect3);

Dispose(sdlpoint);

SDL_Quit;


End.


windows7,fpc 2.6.2



2015. jan. 26. 18:18
 1/4 anonim ***** válasza:

A kódod egy katyvasz.


Kérlek tedd fel valami olyan helyre, ahol van formázási lehetőség.

2015. jan. 27. 13:19
Hasznos számodra ez a válasz?
 2/4 SimkoL ***** válasza:

Ne vedd sértésnek, de először tanulj meg programozni. Alapvető dolgokkal nem vagy tisztában, mint ez a programból kitünik és grafikus dolgokkal akarsz foglalkozni. A 'rahedli ' if helyett case, if fel=true helyett if fel then... az x, y koordináták 'túlcsordulását' nem vizsgálod. Első ránézésre ennyi. Nem ismerem ezt az SDL valamit, soha nem érdekelt a grafika.

Hát szép, átlátható, értelmes kódot írnál a hibakeresés is könnyebb lenne.

2015. jan. 27. 13:50
Hasznos számodra ez a válasz?
 3/4 A kérdező kommentje:

"Ne vedd sértésnek, de először tanulj meg programozni."

azon vagyok,de csak internetről tanulom

"az x, y koordináták 'túlcsordulását' nem vizsgálod"

hogy vizsgáljam?

2015. jan. 27. 16:40
 4/4 A kérdező kommentje:
kösz a választ,átírtam az if-eket case-ekre és mostmár jól megy.kösz mégegyszer.
2015. jan. 27. 16:54

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!