Jeśli się nie mylę, to zasadniczo pytasz, jak podzielić grę na paradygmat Model-Widok-Kontroler.
Po prostu model jest stanem twojej gry. W terminach O-O możesz myśleć o Modelu jako o wszystkich obiektach w grze.
Kontroler to zbiór reguł, które są stosowane do stanu gry (w tym przypadku wszystkich obiektów gry) w każdym cyklu aktualizacji. Może to zostać zaimplementowane jako metoda o nazwie update() we wszystkich twoich obiektach lub może to być funkcja wywoływana w pętli gry, która systematycznie przechodzi przez wszystkie obiekty, które wymagają aktualizacji i, no cóż, aktualizuje je. Możesz również myśleć o kontrolerze jako o pętli gry. Wywołuje wszystko, aby zaktualizować, a następnie rysuje je na ekranie i powtarza, chyba że spełnione są pewne warunki, a następnie nakazuje programowi zrobienie czegoś innego. W ten sposób prawie masz dwie zagnieżdżone struktury MVC. Jeden kontrolujący przepływ programu poprzez menu i takie, i jeden poświęcony samej grze.
Widok to tylko graficzne przedstawienie Twojej gry. Może to być tak proste jak tekst na ekranie, ale w twoim przypadku jest to grafika 2D. Aby to zaimplementować, każdy obiekt może również zawierać jego stan graficzny, bezpośrednio lub poprzez enkapsulację. Widok zrobi niewiele więcej, niż tylko sprawdzi wszystkie obiekty ze względu na ich stan graficzny, a następnie obejmie go na ekranie. Znowu można to zaimplementować na podstawie obiektu, na przykład metody zwanej draw(), lub innej systemowej funkcji, która będzie wywoływana bezpośrednio z pętli gry. Powszechną praktyką jest tworzenie obiektu o nazwie "Sptite" lub coś podobnego do przechowywania informacji graficznej, a każdy obiekt gry, który jest rysowany, ma osobistą instancję. Zwróć też uwagę, że Widok nie musi być obiektem samym w sobie. Wystarczy funkcja wywoływana w pętli gry, chociaż czasami konieczne jest przechowywanie informacji bezpośrednio wpływających na działanie widoku (takich jak rozmiar okna), w którym to przypadku widok może być obiektem. To samo dotyczy kontrolera.
Należy także pamiętać, że te podziały przekroju można się jeszcze dalej, aby uczynić życie prostszym. Na przykład: Kontroler można podzielić na przetwarzanie AI, aktualizację ruchów i sprawdzenie kolizji. Widok może być podzielony na ekran obiektu gry, a HUD i Model mogą być wszystkimi obiektami + całym stanem niezależnymi od obiektów gry (takimi jak ustawienia gry dotyczące rozdzielczości, rozmiaru okna, konfiguracji klawiszy itp.).
Wiem, że to może być trochę przesada i prawdopodobnie zawiera dodatkowe informacje, ale mam nadzieję, że odpowiada na twoje pytanie i daje pomysły na temat tego, od czego zacząć.
Może znajdziesz [ten artykuł] (http://www.gamasutra.com/view/feature/130693/the_guerrilla_guide_to_game_code.php) przydatny .. jeśli jeszcze go nie czytałeś. –
@ tereško Więc w zasadzie ScaryMonsterEnemyView może przechowywać ScaryMonsterEnemyModel? To może mieć sens, myślę ... – tobes
w MVC widok nie trzyma modelu. Widok otrzymuje tylko dane z warstwy modelu. Jest on wysyłany z warstwy modelu (klasyczne MVC) lub żądania według widoku (Model2 MVC). –