mesajah Temat założony przez niniejszego użytkownika |
[SDL] gdzie nie można wejść ? » 2010-11-13 08:07:02 Jak zrobić taki kod w SDL : Postać sobie idzie i żeby nie mogła wchodzić w ścianę.(ani poza ekran) PS: Jak odświeżyc ekran ( usunąć obrazki z menu ) ? |
|
F90M |
» 2010-11-13 08:27:29 |
|
mesajah Temat założony przez niniejszego użytkownika |
» 2010-11-13 08:39:10 Jak odświeżyc ekran ( usunąć obrazki z menu ) ?
Masz te tutki po polsku ? |
|
F90M |
» 2010-11-13 09:03:19 Jak odświeżyc ekran ( usunąć obrazki z menu ) ? |
Powierzchnie aktualizujesz funkcją SDL_Flip(). Musisz po prostu wczytać i wyświetlić menu ze wszystkimi obrazkami, później zrobić to samo tylko bez obrazków. Masz te tutki po polsku ? |
Zawsze daje po polsku jeśli znajdę. |
|
mesajah Temat założony przez niniejszego użytkownika |
» 2010-11-13 09:37:19 Co do odświeżania ekranu to nic nie daje mam takie menu : Start ( jak nacisniemy to chce żeby włączała się funkcja ruch ale menu też znikało ) Wyjscie
a to kod mój : #include <SDL.h> SDL_Surface * ekran = NULL; SDL_Surface * ludek = NULL; SDL_Surface * start = NULL; SDL_Surface * przycisk = NULL; SDL_Rect start2; SDL_Surface * wyjscie2 = NULL; SDL_Rect wyjscie3; SDL_Event zdarzenie; SDL_Rect LudekDestination; SDL_Rect przyciskDane; SDL_Rect przyciskCel; SDL_Rect startDane; SDL_Rect startCel; int x; int y; int myszkaX, myszkaY; bool wyjscie = false;
int ruch() { SDL_Flip( ekran ); ludek = SDL_LoadBMP( "obraz.bmp" ); if( zdarzenie.type == SDL_KEYDOWN ) { switch( zdarzenie.key.keysym.sym ) { case SDLK_RIGHT: x++; break; case SDLK_LEFT: x--; break; case SDLK_UP: y--; break; case SDLK_DOWN: y++; break; } } return 0; }
int menu() { start = SDL_LoadBMP( "start.bmp" ); wyjscie2 = SDL_LoadBMP( "exit.bmp" ); start2.x = 200; start2.y = 100; start2.w = ekran->w; start2.h = ekran->h; wyjscie3.x = 210; wyjscie3.y = 150; wyjscie3.w = ekran->w; wyjscie3.h = ekran->h; przyciskDane.w = 220; przyciskDane.h = 46; przyciskCel.x = 210; przyciskCel.y = 150; startDane.w = 220; startDane.h = 46; startCel.x = 200; startCel.y = 100; SDL_BlitSurface( start, NULL, ekran, & start2 ); SDL_BlitSurface( wyjscie2, NULL, ekran, & wyjscie3 ); SDL_BlitSurface( przycisk, & przyciskDane, ekran, & przyciskCel ); if( zdarzenie.type == SDL_MOUSEMOTION ) { myszkaX = zdarzenie.motion.x; myszkaY = zdarzenie.motion.y; } if( zdarzenie.type == SDL_MOUSEBUTTONDOWN ) { if( zdarzenie.button.button == SDL_BUTTON_LEFT && ( myszkaX >= przyciskCel.x && myszkaX <= przyciskCel.x + przyciskDane.w ) &&( myszkaY >= przyciskCel.y && myszkaY <= przyciskCel.y + przyciskDane.h ) ) { SDL_FreeSurface( ludek ); wyjscie = true; } if( zdarzenie.button.button == SDL_BUTTON_LEFT && ( myszkaX >= startCel.x && myszkaX <= startCel.x + startDane.w ) &&( myszkaY >= startCel.y && myszkaY <= startCel.y + startDane.h ) ) { SDL_Flip( ekran ); ruch(); } } return 0; SDL_Flip( ekran ); }
int main( int argc, char * args[] ) { ekran = SDL_SetVideoMode( 640, 480, 32, SDL_FULLSCREEN ); while( !wyjscie ) { while( SDL_PollEvent( & zdarzenie ) ) { if( zdarzenie.type == SDL_QUIT ) { wyjscie = true; } menu(); } LudekDestination.x = x; LudekDestination.y = y; SDL_BlitSurface( ludek, NULL, ekran, & LudekDestination ); SDL_Flip( ekran ); } SDL_Quit(); return 0; } |
|
F90M |
SDL_FreeSurface( obraz ); » 2010-11-13 09:58:47 Jeśli dobrze widzę to w menu masz dwie powierzchnie: "start" i "wyjscie2", przy wychodzeniu z menu musisz je usunąć za pomocą funkcji SDL_FreeSurface(). |
|
mesajah Temat założony przez niniejszego użytkownika |
» 2010-11-13 10:04:02 klikam start to miga i się znowu pojawia a kod łap : #include <SDL.h> SDL_Surface * ekran = NULL; SDL_Surface * ludek = NULL; SDL_Surface * start = NULL; SDL_Surface * przycisk = NULL; SDL_Surface * mapa = NULL; SDL_Rect start2; SDL_Surface * wyjscie2 = NULL; SDL_Rect wyjscie3; SDL_Event zdarzenie; SDL_Rect LudekDestination; SDL_Rect przyciskDane; SDL_Rect przyciskCel; SDL_Rect startDane; SDL_Rect startCel; int x; int y; int myszkaX, myszkaY; bool wyjscie = false;
int ruch() { SDL_FreeSurface( start ); SDL_FreeSurface( wyjscie2 ); if( zdarzenie.type == SDL_MOUSEBUTTONDOWN ) { if( zdarzenie.button.button == SDL_BUTTON_LEFT && ( myszkaX >= przyciskCel.x && myszkaX <= przyciskCel.x + przyciskDane.w ) &&( myszkaY >= przyciskCel.y && myszkaY <= przyciskCel.y + przyciskDane.h ) ) { } if( zdarzenie.button.button == SDL_BUTTON_LEFT && ( myszkaX >= startCel.x && myszkaX <= startCel.x + startDane.w ) &&( myszkaY >= startCel.y && myszkaY <= startCel.y + startDane.h ) ) { } } SDL_Flip( ekran ); start = NULL; wyjscie2 = NULL; SDL_Flip( ekran ); mapa = SDL_LoadBMP( "mapa.bmp" ); SDL_BlitSurface( mapa, NULL, ekran, NULL ); ludek = SDL_LoadBMP( "obraz.bmp" ); LudekDestination.x = x; LudekDestination.y = y; SDL_BlitSurface( ludek, NULL, ekran, & LudekDestination ); if( zdarzenie.type == SDL_KEYDOWN ) { switch( zdarzenie.key.keysym.sym ) { case SDLK_RIGHT: x++; break; case SDLK_LEFT: x--; break; case SDLK_UP: y--; break; case SDLK_DOWN: y++; break; } } return 0; }
int menu() { start = SDL_LoadBMP( "start.bmp" ); wyjscie2 = SDL_LoadBMP( "exit.bmp" ); start2.x = 200; start2.y = 100; start2.w = ekran->w; start2.h = ekran->h; wyjscie3.x = 210; wyjscie3.y = 150; wyjscie3.w = ekran->w; wyjscie3.h = ekran->h; przyciskDane.w = 220; przyciskDane.h = 46; przyciskCel.x = 210; przyciskCel.y = 150; startDane.w = 220; startDane.h = 46; startCel.x = 200; startCel.y = 100; SDL_BlitSurface( start, NULL, ekran, & start2 ); SDL_BlitSurface( wyjscie2, NULL, ekran, & wyjscie3 ); SDL_BlitSurface( przycisk, & przyciskDane, ekran, & przyciskCel ); if( zdarzenie.type == SDL_MOUSEMOTION ) { myszkaX = zdarzenie.motion.x; myszkaY = zdarzenie.motion.y; } if( zdarzenie.type == SDL_MOUSEBUTTONDOWN ) { if( zdarzenie.button.button == SDL_BUTTON_LEFT && ( myszkaX >= przyciskCel.x && myszkaX <= przyciskCel.x + przyciskDane.w ) &&( myszkaY >= przyciskCel.y && myszkaY <= przyciskCel.y + przyciskDane.h ) ) { SDL_FreeSurface( ludek ); wyjscie = true; } if( zdarzenie.button.button == SDL_BUTTON_LEFT && ( myszkaX >= startCel.x && myszkaX <= startCel.x + startDane.w ) &&( myszkaY >= startCel.y && myszkaY <= startCel.y + startDane.h ) ) { ruch(); } } return 0; SDL_Flip( ekran ); SDL_FreeSurface( start ); SDL_FreeSurface( wyjscie2 ); }
int main( int argc, char * args[] ) { ekran = SDL_SetVideoMode( 640, 480, 32, SDL_FULLSCREEN ); while( !wyjscie ) { while( SDL_PollEvent( & zdarzenie ) ) { if( zdarzenie.type == SDL_QUIT ) { wyjscie = true; } menu(); SDL_FreeSurface( start ); SDL_FreeSurface( wyjscie2 ); } SDL_Flip( ekran ); } SDL_Quit(); return 0; }
|
|
F90M |
» 2010-11-13 10:54:46 return 0; SDL_Flip( ekran ); SDL_FreeSurface( start ); SDL_FreeSurface( wyjscie2 ); Możesz mi wytłumaczyć co próbujesz osiągnąć takim wklejaniem kodu, byle jak i byle gdzie? Trzy ostatnie linijki w życiu się nie wykonają. |
|
« 1 » 2 |