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

[SFML 2.0]Brak możliwości przejścia do opcji menu

Ostatnio zmodyfikowano 2015-01-10 09:55
Autor Wiadomość
michaelolololol
Temat założony przez niniejszego użytkownika
[SFML 2.0]Brak możliwości przejścia do opcji menu
» 2015-01-07 19:23:37
Witam! Jestem początkującym programistą SFML i podczas tworzenia gry w owej bibliotece napotkałem problem, ponieważ nie wiem jak obejść albo znaleźć inny sposób na to, że nie mogę przejść do innej opcji w menu, ponieważ albo gra zacina i wyłącza się po 5 sekundach, lub się cały czas odświeża, ponieważ jest w pętli while(window.isOpen).
Nie wiem co w tej sytuacji zrobić, ponieważ window.display() jest w tej pętli, a funkcja menupokaz() (funkcja zawierająca window.draw(..)) również.
Czy jest może jakiś sposób albo funkcja czyszcząca ekran i zmieniająca wyświetlanie menupokaz() na instrukcjepokaz()? Nie wiem jak miało by się to odbywać, ponieważ obie funkcję są w pętli window.isOpen. Próby stworzenia pętli do...while wewnątrz instrukcji, która wyświetla instrukcje kończą się zawieszeniem gry i wyłączeniem jej po 5 sekundach.
Proszę o pomoc! :D

Kod:

C/C++
while( window.isOpen() )
{
    menupokaz();
   
    ///////Deklaracja dwoch wektorow oznaczajacych aktualna pozycje myszy (ta druga jest uzywana )
   
   
    ///////// Funkcja sprawdzajaca polozenie myszy
   
   
   
   
   
   
    sf::Vector2i pozokn = sf::Mouse::getPosition( window );
    sf::Vector2f pozsce = window.mapPixelToCoords( pozokn );
   
   
   
   
    ////Eventy (zdarzenia)
   
    while( window.pollEvent( event ) )
    {
       
        if( event.type == sf::Event::Closed )
        {
            window.close();
        }
        if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::D )
        {
            playerx += 10;
           
        }
       
        if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::A )
        {
           
            playerx -= 10;
        }
        ///////////////////////////////////////////////////////////// ////// Sprawdzanie czy w granicach kursora znajduje sie sie pole wyjdz
        if( pozsce.x >= 570 && pozsce.x <= 818 && pozsce.y >= 496 && pozsce.y <= 556 )
        {
            if( event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left )
                 window.close();
           
        }
       
        ////////////////////Sprawdzanie czy w granicach kursora znajduje sie pole instrukcja/////////////////////////////////////////////////////////////////////////////////////////////
        if( pozsce.x >= 570 && pozsce.x <= 818 && pozsce.y >= 419 && pozsce.y <= 486 )
        {
            if( event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left )
            {
               
            }
           
        }
       
       
       
       
    }
   
   
   
    window.display();
}
P-124405
starter
» 2015-01-07 20:40:48
a daj cały kod programu
lub przynajmniej definicje funkcji
P-124409
michaelolololol
Temat założony przez niniejszego użytkownika
» 2015-01-10 09:55:13
Okej, znalazłem rozwiązanie. Wystarczyło zmienić środek pętli isOpen. Dałem w środku dwa if-y i zrobiłem typ wyliczeniowy, który reprezentował dwa stany. W pierwszym stanie rysowałem menu, a w drugim instrukcję. Mam jednak problem z dźwiękiem, ponieważ jak włączam grę to dźwięk się nie odtwarza, dopiero wtedy gry kliknę na ramkę górną tam gdzie są minimalizuj, itd. Gdy ją puszczę, dźwięk zacina się i wydaje cały czas jakieś bbbbbbbbbbbbbbbbbbbbbb. Help D:
Dźwięk działa w instrukcji, ale w menu nie.   Gdy dam music.play() w kodzie z instrukcją, to działa tylko tam. Gdy do menu, działa tylko w menu. A gdy dam w obu, to w obu się zawiesza. Okej. Ta sprawa też rozwiązana. Wystarczyło dać music.play() przed pętlę :)
P-124549
« 1 »
  Strona 1 z 1