Relacje między modułami (klasami) programu

0

Witam. Mam napisaną właściwie prostą grę. Napisaną może trochę za dużo powiedziane. Mam napisane ładne moduły: GUI oraz komunikację Multiplayer (sama mechanika gry jest nieistotna). Wszystko w QT. Moje pytanie brzmi, jak powiązać ze sobą te klasy "tak jak to się robi" a nie "byle działało"? Tzn. zależy mi na modułowości programu, łatwej rozbudowie, przenośności kodu i używaniu go później.
Podam przykład: Mam klasy odpowiedzialne za przesyłanie danych o położeniu gracza i klasę wyświetlające w GUI "obrazek" tego gracza (w okienku, na mapie). Jestem ciekaw jak jest to rozwiązane w profesjonalnych produkcjach? Jak są przesyłane dane z jednej klasy do drugiej? Mogę to łatwo zrobić na sygnałach i slotach ale jak wiemy, inne biblioteki nie muszą z nich korzystać. Na pewno w grę wchodzi jakaś skomplikowana hierarchia klas ale nie mam totalnie doświadczenia w kwestii projektowania gier od tej strony :) Pzdr

0

Dzięki, przejrzałem ale po przeczytaniu tego "tutka" postanowiłem trochę przeobrazić moją prostą grę, na wersję bardziej PRO. Nie wiem czy dobrze się za to zabieram.

Mam klasę abstrakcyjną Game_Drawable (dziedziczy po QWidget) (zawiera metodę wirtualna draw() = 0), po której dziedziczy klasa Game_Object a po której to dziedziczą wszystkie klasy (obiekty w grze), które mogą być rysowane. Klasy te mają własną metodę draw(). Mam też klasę Game_Scene, która zawiera wszystkie dodane do sceny elementy (w formie tablic obiektów). Jest też główna klasa Game z metodami takimi jak start() stop() pause()). Nie wiem czy dobrze się za to zabieram? W podanym przez kolegę wyżej arcie jest sporo wzorców, które możnaby zastosować, np taki Singleton dla klasy Game_Scene (miałbym ją dostępną z każdego miejsca programu i łatwo bym dodawał kolejne elementy).

1

Poczytać zawsze dobrze, ale najlepiej pisać. Przepisz grę, udoskonalaj ją testuj, wtedy zauważysz jakie masz problemy i co powinieneś poprawić. Potem znowu ją przepisz pamiętając stare problemy i tak w kółko, aż do znudzenia (nowego projektu).
lektury powinny być tylko drogowskazem, a praktyka przyniesie zrozumienie czemu te drogowskazy są dobre lub złe (nie wszystko "co się świeci" w internecie "to złoto").

0

Tak zrobię bo właśnie się projekt pojawił więc jest motywacja. Zastanawiam się jeszcze nad wdrożeniem modelu MVC tak żeby rozdzielić pewne rzeczy i nie mieszać np. logiki i renderingu. Czy w tym przypadku mam tylko jeden kontroler a w nim pola z widokami i modelami? Bo np. w frameworkach PHP mamy wiele kontrolerów, ale nie bardzo wiem jak w C++ takie coś mogłoby wyglądać.

Wykombinowałem coś takiego:
https://github.com/mateuszs/mvctest (aplikacja z menu z elementem "Opcje". Po kliknięciu otwiera się nowe puste okno). Przypomina to MVC?

1 użytkowników online, w tym zalogowanych: 0, gości: 1