SFML obiektowo

0

Cześć.
Jeżeli gdzieś już jest post w którym poznam odpowiedź to proszę podać link.

Mam taki problem. Próbuję stworzyć (obiektowo) prostą grę opartą o c++ i sfml 2.x .
Przykład;
Tworzę klasy:
-Grafika
-sterowanie

W klasie grafika mam metody które renderują i generują okno a także metode która wczytuje grafikę, a w klasie sterowanie mam metode sterowania modelem na scenie czyli graczem. I tu mam problem, próbowałem na wiele sposobów; przyjaźń, dziedziczenie i nic nie pomaga, a chodzi mi o to że:
W klasie Grafika w metodzie okno tworzę okno o nazwie window. W klasie sterowanie metoda ruch korzysta z zmiennej nazwy okna, i pokazuje błąd że taka zmienna nie istnieje. Moje pytanie brzmi: Jak utworzyć te klasy żeby metoda w klasie sterowanie odczytywała nazwę okna z klasy Grafika?

spartanPAGE
  • Rejestracja:prawie 12 lat
  • Ostatnio:około miesiąc
0

Zastanów się co ma sterowanie postacią do okna.
Ale wiesz, tak porządnie.

TF
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 10 lat
  • Postów:26
0

Możesz dziedziczyć po klasie

Kopiuj
sf::Drawable

, tutaj masz przykłady: http://szymonsiarkiewicz.pl/rysowanie-obiektow-2d/
lub możesz stworzyć w swojej klasie funkcje:

Kopiuj
void MyClass:render(sf::RenderWindow &window)
{
window.draw(sprite);
}

i wywołujesz:

Kopiuj
sf::RenderWindow window //okno aplikacji
MyClass x;
x.render(window);
0

spartanPAGE,
sterowanie ma do okna to że poruszam spritem po scenie a w/w metoda wyświetla błąd że nie jest określone okno w danej klasie

Trebuh
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:okolice Łodzi
0

Zrób klasę gracz. W tej klasie będziesz miał metodę która będzie umożliwiała poruszanie postacią - zmieniasz pozycję sprita oraz rysujesz go na oknie które przekazujesz w argumencie funkcji.

pamiętaj o &


GG: 10101100010110000100011101 (BIN)
"Nie wszystko napisane w internecie jest prawdą" - Józef Piłsudski.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.