problem jest taki, że gdy wciskam klawisz odpowiedzialny za ruch strzałki sterującej, to owszem, idzie ona w dół, ale jej poprzednia pozycja nadal zostaje na ekranie:
jak sobie z tym poradzić?
kod:
Kod:
#define SCREEN_WIDTH 1000
#define SCREEN_HEIGHT 700
#define GAMEPOS 253
#define HIGHSCORESPOS 295
#define QUITPOS 337
void mainmenu()
{
SDL_Window* mmenu = NULL;
SDL_Surface* screenSurface = NULL;
SDL_Surface *pointer, *logo, *game, *highscores, *quit, *controls;
mmenu = SDL_CreateWindow( "Arkanoid ", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
screenSurface = SDL_GetWindowSurface( mmenu );
SDL_FillRect( screenSurface, NULL, SDL_MapRGB( screenSurface->format, 0, 0, 0 ) );
SDL_UpdateWindowSurface( mmenu );
SDL_Rect ppos,lpos,gpos,hpos,qpos,cpos;
SDL_Event event;
int loop, z;
logo = SDL_LoadBMP("logo.bmp");
lpos.x=300;
lpos.y=150;
controls = SDL_LoadBMP("controls.bmp");
cpos.x=50;
cpos.y=300;
pointer = SDL_LoadBMP("pointer.bmp");
ppos.x=340;
ppos.y=295;
z=ppos.y-42;
game = SDL_LoadBMP("play.bmp");
gpos.x=400;
gpos.y=300;
highscores = SDL_LoadBMP("highscores.bmp");
hpos.x=400;
hpos.y=350;
quit = SDL_LoadBMP("quit.bmp");
qpos.x=400;
qpos.y=400;
SDL_BlitSurface( logo, NULL, screenSurface, &lpos );
SDL_BlitSurface( game, NULL, screenSurface, &gpos );
SDL_BlitSurface( controls, NULL, screenSurface, &cpos );
SDL_BlitSurface( highscores, NULL, screenSurface, &hpos );
SDL_BlitSurface( quit, NULL, screenSurface, &qpos );
SDL_UpdateWindowSurface( mmenu );
while( loop != 0 )
{
while( SDL_PollEvent( &event ) != 0 )
{
if( event.type == SDL_QUIT )
{
loop = 0;
}
if( event.type == SDL_KEYDOWN )
{
switch( event.key.keysym.sym )
{
case SDLK_UP:
z=z-42;
if (z<248)
{
z=z+42;
}
break;
case SDLK_DOWN:
z=z+42;
if (z>358)
{
z=z-42;
}
break;
case SDLK_RETURN:
if (z==GAMEPOS)
{
SDL_DestroyWindow( mmenu );
thegame();
}
if (z==HIGHSCORESPOS)
{
SDL_DestroyWindow( mmenu );
highscore();
}
if (z==QUITPOS)
{
loop=0;
}
break;
}
}
}
ppos.y=z;
SDL_BlitSurface( pointer, NULL, screenSurface, &ppos );
SDL_UpdateWindowSurface( mmenu );
}
}
Zakładki