FPC, SDL, program miért lép ki, ha az egeret egy bizonyos oszlophoz teszem?
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
A kódod egy katyvasz.
Kérlek tedd fel valami olyan helyre, ahol van formázási lehetőség.
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.
"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?
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!