[SFML 2.0]Brak możliwości przejścia do opcji menu
Ostatnio zmodyfikowano 2015-01-10 09:55
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: while( window.isOpen() ) { menupokaz(); sf::Vector2i pozokn = sf::Mouse::getPosition( window ); sf::Vector2f pozsce = window.mapPixelToCoords( pozokn ); 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; } 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(); } 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(); }
|
|
starter |
» 2015-01-07 20:40:48 a daj cały kod programu lub przynajmniej definicje funkcji |
|
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ę :) |
|
« 1 » |