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

MENU W SDL

Ostatnio zmodyfikowano 2013-01-01 18:01
Autor Wiadomość
MeGameOne
Temat założony przez niniejszego użytkownika
MENU W SDL
» 2012-12-31 14:06:37
witam  wszystkich
Uczę się ostatnio biblioteki SDL . Potrafie już  np.  wyswietlac grafikę,rysować figury,  nawet nauczyłem sie doskonale obsługiwać klawiaturę i myszke , ale nie mam zielonego pojęcia jak zrobić to menu , aby w tym samym oknie wyświetlić np gre albo reszte menu.
Sorki ze pisze tak nie estetycznie, ale na tablecie to nie to samo co na kompie .
Pozdrawiam
P-72506
mactec
» 2012-12-31 14:11:16
NP. Wyświetl sobie buttony na ekranie a potem obsłuż je. np jak wjedziesz myszką na button exit i naciśniesz LPM to się gra wyłączy, i tak dalej obsłuż  resztę buttonów.
P-72509
MeGameOne
Temat założony przez niniejszego użytkownika
» 2012-12-31 16:45:57
Właśnie potrafię to zrobić ale gorzej z tym żeby zmieniać wygląd danego okna; np. Wybierasz ustawienia i wtedy poprzedni obraz powinien zniknąć a powinien pojawić sie obraz opcji,  wie moze ktos jak by mozna bylo osiągnąć dany efekty, a moze jest jakaś funkcja umożliwiająca  czyszczenie ekranu i nie chodzi mi o system("cls") .
  Z góry; dzięki
P-72537
mactec
» 2012-12-31 16:51:03
W SDL'u nie masz czyszczenia, musisz wyświetlić coś na tamtym co było np tło.
P-72538
Mike148
» 2012-12-31 17:01:09
http://www.libsdl.org/docs/html/sdlfillrect.html - Można to nawet nazwać czyszczeniem :)
P-72540
MeGameOne
Temat założony przez niniejszego użytkownika
» 2012-12-31 17:06:52
Ale jakoś te buttony muszą znikac.
P-72543
Mike148
» 2012-12-31 17:17:34
SDL super dokładnie nie znam ale o ile się nie mylę to rysując buttony, ty je składasz do kupy z video surface za pomocą SDL_Blit().
Jak wyczyścisz powierzchnię ekranu to buttony znikną o ile ich znowu nie narysujesz.

Zrób to mniej więcej tak (na szybko z głowy)
C/C++
void menu1()
{
    //kod rysującu menu 1
}

void menu2()
{
    //kod rysującu menu 2
}


while( true ) // Okrojona pętla gry
{
    SDL_FillRect( screen, NULL, 0x221122 ); // Daj tam odpowiednie parametry bo to jest z głowy
   
    int menuState; // Zmienna przechowywująca wartość mówiącą który panel rysować - jakoś to obsłużysz
   
    switch( menuState )
    {
    case 1: menu1(); break;
    case 2: menu2(); break;
    case 0: break; // Nie jesteś w menu
    }
}

menuState możesz sobie zastąpić jakimś enumem (będzie czytelniej)
P-72546
mactec
» 2012-12-31 17:21:27
To jak nie wiesz jak takie rzeczy zrobić to się poucz podstaw, ale Ci troche podpowiem:


C/C++
int level = 1; // przykładowa zmienna do sprawdzania stanu menu

switch( level ) {
case 1: /*Wyświetl menu*/ break;
case 2: /*Wyświetl grę*/ break;
}

I dajmy robisz coś takiego, że po wciśnięciu start wartość level zmienia się na 2.
P-72548
« 1 » 2
  Strona 1 z 2 Następna strona