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

Wyświetlanie sprite przy kolizji i pauza - sfml

Ostatnio zmodyfikowano 2019-01-13 22:38
Autor Wiadomość
Wrobek12
Temat założony przez niniejszego użytkownika
Wyświetlanie sprite przy kolizji i pauza - sfml
» 2019-01-12 13:56:56
Witam, mam problem w wyświetlaniem się sprite przy kolizji z innym spritem oraz pauzowaniem gry.

Kod wygląda następująco:

if ((Sprite.getBounds().intersects(Sprite2.getGlobalBounds())))
{

window.draw(napis.getNapis());
window.waitEvent(event);

if (event.key.code == sf::Keyboard::T)
{
window.close();
}
else
{
window.display();
}




}

};

Przy kolizji gra się pauzuje, ale nie wyświetla się sprite. Jakiej modyfikacji należy dokonać, aby najpierw wyświetlił się sprite, a od razu po nim nastąpiła pauza ? Kolejny problem mam z pauzą.. Nie mogę zdefiniować zdarzenia "event" tak, aby czekał on na wciśnięcie konkretnego klawisza, a nie tak jak teraz - na każde zdarzenie, nawet ruch myszki :)
P-173498
pekfos
» 2019-01-12 15:35:05
Próbujesz to zrobić jak aplikację konsolową, czyli tak źle, jak tylko się da. Główna pętla programu ma się wykonywać na okrągło, niezależnie od tego czy gra jest wstrzymana, czy nie. Wszelką logikę musisz pisać z uwzględnieniem tego, że program nie może się zatrzymywać. W przeciwnym razie program po prostu nie będzie działać poprawnie.
P-173499
Wrobek12
Temat założony przez niniejszego użytkownika
» 2019-01-12 15:42:47
Tak, ale głównego programu nie zatrzymuję, jeżeli jest zdefiniowany jako sf::Event Zdarzenie, a ja korzystam z sf::Event event, zgadza się ? To są chyba 2 oddzielne wydarzenia, na które czeka program. Nie jestem w tym temacie ekspertem, ale tak to właśnie rozumiem.

@Edit. Jeżeli nie zatrzymywać ekranu tym, to jakie polecenie powinienem zastosować ?
P-173500
pekfos
» 2019-01-12 15:44:30
Twoja aktualna pauza działa przez zatrzymanie programu, więc błędnie.
P-173501
Wrobek12
Temat założony przez niniejszego użytkownika
» 2019-01-12 15:49:55
Jakim poleceniem powinienem zastąpić aktualną pauzę, aby gra okienkowa działała poprawnie ?

system("Pause") też nie wykonuje się poprawnie. Rzekłbym, że jest nawet gorzej, niż aktualnie.
P-173502
pekfos
» 2019-01-12 15:57:36
Chyba nie zrozumiałeś tego, co pisałem pogrubionym tekstem. Program nie może się zatrzymywać, więc każda metoda zatrzymywania programu będzie mniej lub bardziej błędna. Kod ma się wykonywać wielokrotnie w ciągu sekundy, więc nie możesz wyrażać stanu programu tym, gdzie się w programie znajdujesz. Zmienne brzmią jak coś w czym można przechowywać informacje. Np, czy gra w danym momencie ma być wstrzymana czy nie. Instrukcje if z kolei przydadzą się by w obsłudze zdarzeń, aktualizacji i wyświetlaniu gry wcielić w życie cokolwiek ta pauza ma zmieniać w działaniu programu.
P-173503
Wrobek12
Temat założony przez niniejszego użytkownika
» 2019-01-12 16:06:15
Rozumiem, że najlepszą metodą jest nie wstrzymanie programu, tylko nadanie wszystkim elementom prędkości 0, aby w programie się zwyczajnie nic nie poruszało ?
P-173504
pekfos
» 2019-01-12 16:14:40
A potem co? Przywrócisz te wartości? Co jeśli każdy obiekt ma inną? Jakbyś po prostu nie wykonywał całego kodu odpowiedzialnego za poruszanie obiektów, to te obiekty też się nie będą poruszać. I będzie to bez porównania łatwiejsze rozwiązanie niż twoje.
P-173505
« 1 » 2 3 4
  Strona 1 z 4 Następna strona