Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z Guzikami w SDL

Ostatnio zmodyfikowano 2010-03-13 20:25
Autor Wiadomość
Szadziu
Temat założony przez niniejszego użytkownika
Problem z Guzikami w SDL
» 2010-03-11 16:59:15
C/C++
#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? :)
P-14901
szyx_yankez
» 2010-03-11 17:31:53
Skrypt? Czy aby napewno?
P-14903
Szadziu
Temat założony przez niniejszego użytkownika
» 2010-03-11 18:58:00
kodem? To nie rozwiązuje mojego problemu...
P-14919
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 :).
P-14941
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:

C/C++
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.
P-14956
Elaine
» 2010-03-13 13:11:02
Jest możliwość.
C/C++
// sth jest typu const char*
tekst = TTF_RenderUTF8_Blended( font, sth, textColor );

Na przyszłość: jeden temat == jeden problem.
P-14957
malan
» 2010-03-13 20:25:20
jeden temat == jeden problem.
Amen :). Problem rozwiązany (a nawet dwa) - temat zamknięty.
P-14990
« 1 »
  Strona 1 z 1