TheLukon Temat założony przez niniejszego użytkownika |
[SDL] Problem z rozpoczęciem gry » 2010-03-14 11:04:11 #include <SDL.h>
SDL_Surface * ekran = NULL; SDL_Surface * przycisk = NULL; SDL_Surface * przycisk_start = NULL; SDL_Surface * kursor = NULL; SDL_Surface * ludek = NULL; SDL_Rect przyciskDane; SDL_Rect przyciskCel; SDL_Rect przyciskDane_Start; SDL_Rect przyciskCel_Start; SDL_Rect kursorDane; SDL_Rect kursorCel; SDL_Event zdarzenie; SDL_Rect LudekDestination; Uint8 * keystate = SDL_GetKeyState( NULL ); int myszkaX, myszkaY; bool wyjscie = false; bool gra = false; int x; int y;
int main( int argc, char * args[] ) { SDL_Init( SDL_INIT_EVERYTHING ); ekran = SDL_SetVideoMode( 800, 600, 32, SDL_SWSURFACE | SDL_DOUBLEBUF ); przycisk = SDL_LoadBMP( "przycisk.bmp" ); przycisk_start = SDL_LoadBMP( "przycisk_start.bmp" ); kursor = SDL_LoadBMP( "kursor.bmp" ); ludek = SDL_LoadBMP( "ludek.bmp" ); przyciskDane.w = 200; przyciskDane.h = 50; przyciskCel.x = 300; przyciskCel.y = 400; przyciskDane_Start.w = 200; przyciskDane_Start.h = 50; przyciskCel_Start.x = 300; przyciskCel_Start.y = 150; kursorDane.x = 0; kursorDane.y = 0; while( !wyjscie ) { SDL_FillRect( ekran, NULL, 0 ); SDL_ShowCursor( SDL_DISABLE ); SDL_BlitSurface( przycisk, & przyciskDane, ekran, & przyciskCel ); SDL_BlitSurface( przycisk_start, & przyciskDane_Start, ekran, & przyciskCel_Start ); SDL_BlitSurface( kursor, NULL, ekran, & kursorDane ); SDL_Flip( ekran ); while( SDL_PollEvent( & zdarzenie ) ) { if( zdarzenie.type == SDL_MOUSEMOTION ) { kursorDane.x = zdarzenie.motion.x; kursorDane.y = zdarzenie.motion.y; } if( zdarzenie.type == SDL_MOUSEBUTTONDOWN ) { if( zdarzenie.button.button == SDL_BUTTON_LEFT && ( kursorDane.x >= przyciskCel.x && kursorDane.x <= przyciskCel.x + przyciskDane.w ) &&( kursorDane.y >= przyciskCel.y && kursorDane.y <= przyciskCel.y + przyciskDane.h ) ) { wyjscie = true; } if( zdarzenie.button.button == SDL_BUTTON_LEFT && ( kursorDane.x >= przyciskCel_Start.x && kursorDane.x <= przyciskCel_Start.x + przyciskDane_Start.w ) &&( kursorDane.y >= przyciskCel_Start.y && kursorDane.y <= przyciskCel_Start.y + przyciskDane_Start.h ) ) { SDL_Flip( ekran ); if( keystate[ SDLK_RIGHT ] ) { x++; } LudekDestination.x = x; SDL_BlitSurface( ludek, NULL, ekran, & LudekDestination ); SDL_Flip( ekran ); if( keystate[ SDLK_LEFT ] ) { x--; } LudekDestination.x = x; SDL_BlitSurface( ludek, NULL, ekran, & LudekDestination ); SDL_Flip( ekran ); if( keystate[ SDLK_DOWN ] ) { y++; } LudekDestination.y = y; SDL_BlitSurface( ludek, NULL, ekran, & LudekDestination ); SDL_Flip( ekran ); if( keystate[ SDLK_UP ] ) { y--; } LudekDestination.y = y; SDL_BlitSurface( ludek, NULL, ekran, & LudekDestination ); SDL_Flip( ekran ); } } if( zdarzenie.key.keysym.sym == SDLK_ESCAPE ) wyjscie = true; } } SDL_FreeSurface( przycisk ); SDL_FreeSurface( przycisk_start ); SDL_FreeSurface( ludek ); SDL_FreeSurface( kursor ); return( 0 ); }
I gdy chce włączyć start, na chwilę pojawia mi ludek i znika, a menu nadal jest. Jak rozwiazać ten problem? |
|
malan |
» 2010-03-14 13:08:24 Nie znam SDL dobrze, ale błąd chyba polega na tym, że czyścisz ekran i nie odrysowujesz ludka. Sprawdź coś takiego: bool wyswietl_ludka = false;
LudekDestination.x = x; wyswietl_ludka = true;
SDL_FillRect( ekran, NULL, 0 ); SDL_ShowCursor( SDL_DISABLE ); SDL_BlitSurface( przycisk, & przyciskDane, ekran, & przyciskCel ); SDL_BlitSurface( przycisk_start, & przyciskDane_Start, ekran, & przyciskCel_Start );
if( wyswietl_ludka ) SDL_BlitSurface( ludek, NULL, ekran, & LudekDestination );
SDL_BlitSurface( kursor, NULL, ekran, & kursorDane ); SDL_Flip( ekran );
Jeżeli to zadziała to będziemy się martwić kiedy przystać wyświetlać ludka :). |
|
TheLukon Temat założony przez niniejszego użytkownika |
» 2010-03-14 13:32:05 Dzięki malan. :D |
|
« 1 » |