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

[SFML 2.0] Lepszy pomysł na menu do gry

Ostatnio zmodyfikowano 2013-09-05 23:01
Autor Wiadomość
tomasz
Temat założony przez niniejszego użytkownika
[SFML 2.0] Lepszy pomysł na menu do gry
» 2013-09-05 22:41:10
Witam zacząłem zastanawiać się nad moim pomysłem, którego używam do tworzenia menu gry i dochodzę do wniosku, że jest zły. Przeglądałem forum i natknąłem się na jeden bardzo podobny problem (w zasadzie to chyba nawet taki sam (http://cpp0x.pl/forum/temat/?id=7610)), ale niestety odpowiedz nic mi nie dała, więc postanowiłem stworzyć nowy temat. Wydaję mi się, że używam za dużo instrukcji warunkowej. Mianowicie mój kod wygląda tak:
C/C++
int zmienna = 0;

while( window.isOpen() )
{
    while( window.pollEvent( zdarzenie ) )
    {
        if( zdarzenie.type == sf::Event::Closed )
             window.close();
       
        if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Escape )
             window.close();
       
        if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.key.code == sf::Mouse::Left )
        {
           
            if( recruitButton.getGlobalBounds().contains( mouse.getPosition( window ).x, mouse.getPosition( window ).y ) && zmienna == 0 ) zmienna = 1;
           
        }
    }
    /////////
   
    if( zmienna == 1 ) wyswietlenie menu lub czegos innego
}

Tak więc pierwsze pytanie czy jest to dobre rozwiązanie? Wydaje mi się, że nie więc zadamy kolejne pytanie, jak można by to poprawić? Po pierwsze mam problem z przyciskami, bo muszę sprawdzać w pierwszym ifie cy zmienna jest niezmieniona bo tak to przycisk można przycisnąć nawet jeśli nie jest wyświetlony. Druga sprawa to drugi if poza pętlą zdarzeń, chyba, że jest to najlepsze rozwiązanie?
P-91585
SeaMonster131
» 2013-09-05 22:49:11
Lepiej stworzyć chociażby enum, ale operując na Twojej zmiennej, może to wyglądać tak:
C/C++
if( zmienna == 1 )
{
    // menu
    if( klikniecie na przycisk 1 )
         zmienna = 2;
   
    if( klikniecie na przycisk 2 )
         zmienna = 3;
   
}

if( zmienna == 2 )
{
    // opcje
}

if( zmienna == 3 )
{
    // cos tam innego
}
P-91586
tomasz
Temat założony przez niniejszego użytkownika
» 2013-09-05 22:56:04
Czyli widzę, że takie rozumowanie jak u mnie, więc mam jeszcze tylko pytanie odnoście samej instrukcji kliknięcia, ja dodaje do swojej
C/C++
&& zmienna == 0
żeby wiedzieć, że przycisk jest wyświetlony. I chciałem się zapytać czy da się rozwiązać to w inny sposób. Ogólnie to rozwiązanie staje się uciążliwe gdy dochodzi więcej przycisków lub, pomniejszych menu.
P-91587
SeaMonster131
» 2013-09-05 22:58:44
Dlatego rozpisałem Ci, jak to może wyglądać. W Menu wyświetlasz przyciski menu i obsługujesz tylko kliknięcia z menu, w opcjach opcje itd.
P-91588
tomasz
Temat założony przez niniejszego użytkownika
» 2013-09-05 23:01:01
Aa, ok. Teraz widzę. No to dzięki za pomysł, czas posprzątać w kodzie :)
P-91589
« 1 »
  Strona 1 z 1