Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21942

SFML - Organizacja kodu oraz pewien problem

$
0
0

Witam, pisząc moje projekty, zawsze mam problem jak wszystko dobrze zorganizować tzn. podzielenia projektu na pliki, klasy itp. itd.

"Taktyka" którą stosuję, to podzielenie różnego rodzaju "ekranów" na osobne klasy:
Mam różne klasy "Game""MainMenu" itp. każda z nich obsługuje różny rodzaj wyświetlania elementów.
Game wyświetla gracza, tło, no generalnie obsługuje całą rozgrywkę. MainMenu, obsługuje menu itp.

Dotychczas stosowałem metodę robienia pętli w każdej klasie. Tzn.:
 

Game game;
game.run(); //Tutaj znajduje się pętla oraz funkcja po zakończeniu pętli zwraca jakąś wartość, np. punkty
MainMenu menu;
menu.run(); //Tutaj także jest pętla...

Jednak mój ostatni projekt postanowiłem zorganizować nieco inaczej.
tzn. w funkcji main() utworzyć jedną główną pętlę gry dla całego projektu i tak wszystko obsługiwać:
 

int main(){
    Game game;
    while(window.isOpen()){
        game.update();
        window->clear();
        window.draw(game);
        sf::Event event;
        while(window.pollEvent(event){
                if(event.type == sf::Event::Closed) window.close();
                game.input(event);
        }
    }
}

w klasie Game znajduje się obiekt klasy sf::RenderTexture w którym wszystko jest rysowane, po czym rysowane w samym oknie za pomocą wirtualnej funkcji odziedziczonej po klasie sf::Drawable

Wszystko szło jak po maśle, tworzyłem, tworzyłem aż w końcu zechciałem woku statku (Gra polega na "lataniu" statkiem po kosmosie itp.) umieścić okrągłego Health Bara oraz Ammo Bara.
A więc według mojej logiki, stworzyłem klasę CircleProgressBar w którym tworzony jest obiekt klasy sf::RenderTexture.
Użyłem tej samej metody co stosowałem do rysowanie zawartości game w pętli głównej tzn. odziedziczyłem klasą CircleProgressBar, klase sf::Drawable i zdefiniowałem funkcje draw.
W funkcji draw w game rysowałem obiekty klasy CircleProgressBar.
Problem jest taki, że kompletnie nie mogę zrobić, żeby RenderTexture przemieszczał się za graczem.

Jako że plików jest dosyć sporo, dlatego zamieszczam link do pobrania paczki z całym kodem.
A tutaj perę screenshotów

Na fioletowo zaznaczyłem sf::RenderTexture, jak widać ucina mi progressBary jak pojazd wyjedzie poza pole.
PS. Ustawienie setCenter dla View RenderTexture nie pomaga.


Viewing all articles
Browse latest Browse all 21942

Trending Articles


H. H. Schild - MRI Zrozumieć Rezonans Magnetyczny [PDF] [DJVU] [PL]


Windows MX 9 by MalcolmX (x86/x64) [PL] [.iso]


Musierowicz Małgorzata - Noelka [audiobook PL]


Kombajn ziemniaczany GRIMME HLS 750


Sok malinowy


Antena Rybakowa


Thinspiracje


[Filmy XviD / DivX] Sekret Magika - Geheim, Het *2010* [DVDRip] [XviD]...


Renault Laguna III - kontrolki (P) oraz /check handbrake


Alawar Keygen POLECAM