Problem z Guzikami w SDL
Ostatnio zmodyfikowano 2010-03-13 20:25
Szadziu Temat założony przez niniejszego użytkownika |
Problem z Guzikami w SDL » 2010-03-11 16:59:15 #include <SDL.h> SDL_Surface * ekran = NULL; SDL_Surface * przycisk = NULL; SDL_Surface * przycisk2 = NULL; SDL_Rect przyciskDane; SDL_Rect przyciskCel; SDL_Rect przyciskDane1; SDL_Rect przyciskCel1; SDL_Event zdarzenie; int myszkaX, myszkaY; int x = 4; bool wyjscie = false; int main( int argc, char * args[] ) { SDL_Init( SDL_INIT_EVERYTHING ); ekran = SDL_SetVideoMode( 800, 600, 32, SDL_SWSURFACE | SDL_DOUBLEBUF ); przycisk = SDL_LoadBMP( "exit.bmp" ); przycisk2 = SDL_LoadBMP( "exit.bmp" ); przyciskDane.w = 200; przyciskDane.h = 50; przyciskCel.x = 300; przyciskCel.y = 275; przyciskDane1.w = 200; przyciskDane1.h = 50; przyciskCel1.x = 30; przyciskCel1.y = 25; while( !wyjscie ) { SDL_FillRect( ekran, NULL, 0 ); SDL_BlitSurface( przycisk, & przyciskDane, ekran, & przyciskCel ); SDL_Flip( ekran ); while( SDL_PollEvent( & zdarzenie ) ) { 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 ) ) { while( x > 1 ) { SDL_FillRect( ekran, NULL, 0 ); SDL_BlitSurface( przycisk2, & przyciskDane1, ekran, & przyciskCel1 ); SDL_Flip( ekran ); if( zdarzenie.type == SDL_MOUSEBUTTONDOWN ) { if( zdarzenie.button.button == SDL_BUTTON_LEFT && ( myszkaX >= przyciskCel1.x && myszkaX <= przyciskCel1.x + przyciskDane1.w ) &&( myszkaY >= przyciskCel1.y && myszkaY <= przyciskCel1.y + przyciskDane1.h ) ) { wyjscie = true; x = 1; } } } } } if( zdarzenie.key.keysym.sym == SDLK_ESCAPE ) wyjscie = true; } } SDL_FreeSurface( przycisk ); return 0; } Witajcie, to znowu ja. Mam nadzieje, że nikt nie będzie na mnie zły że znowu wam głowę zawracam :) Mam problem z wyżej wklejonym kodem. Mianowicie. Wyświetla mi prawidłowo pierwszy guzik na samym środku ekranu, gdy go nacisnę wyświetla się kolejny. I tu jest problem. Gdyż jakąkolwiek instrukcje bym nie podpiął do drugiego guzika, to nie działa. Czy mógłby ktoś powiedzieć mi gdzie zbłądziłem? :) |
|
szyx_yankez |
» 2010-03-11 17:31:53 Skrypt? Czy aby napewno? |
|
Szadziu Temat założony przez niniejszego użytkownika |
» 2010-03-11 18:58:00 kodem? To nie rozwiązuje mojego problemu... |
|
malan |
» 2010-03-12 20:13:41 Gdyż jakąkolwiek instrukcje bym nie podpiął do drugiego guzika, to nie działa. To może oznaczać, że warunek (który sprawdza, czy guzik został wciśnięty) NIGDY nie jest/będzie spełniony. Sprawdź dokładnie, czy nie popełniłeś żadnego błędu :). |
|
Szadziu Temat założony przez niniejszego użytkownika |
» 2010-03-13 12:40:50 Dobra mam kolejne pytanie do was:) Używam biblioteki SDL_ttf, i mam pytanie. Zazwyczaj wczytuje tekst na powierzchnie w ten sposób: tekst = TTF_RenderUTF8_Blended( font, "tekstteksttekst", textColor );
Działa wszystko ok. Mam tylko pytanie czy jest możliwość żeby zamiast ciągu znaków (tj. zamiast wpisywania w cudzysłowie tekstu) jest możliwość podania tutaj nazwy zmiennej z której ma być pobierana wartość do wyświetlenia. |
|
Elaine |
» 2010-03-13 13:11:02 Jest możliwość. tekst = TTF_RenderUTF8_Blended( font, sth, textColor );
Na przyszłość: jeden temat == jeden problem. |
|
malan |
» 2010-03-13 20:25:20 jeden temat == jeden problem. |
Amen :). Problem rozwiązany (a nawet dwa) - temat zamknięty. |
|
« 1 » |