Jestem w trakcie opracowywania opartej na XNA gry opartej na sprite'ach 2D dla Windows 7 Phone. Dostępne szkolenia i samouczki są bardzo pomocne, ale napotykam problem, ponieważ każdy z nich podchodzi do projektu swojej klasy inaczej, a kod nie jest szczególnie dobrze przemyślany. W rezultacie trudno mi było dobrze zrozumieć, jakie obowiązki powinienem powierzyć konkretnej klasie.
Na przykład mógłbym mieć podstawową klasę sprite, BaseSprite
która umie rysować, sprawdzać kolizje itp. Mógłbym mieć AnimatedSprite
klasę, która wiedziałaby, jak poruszać się po jej arkuszu, ExplodingSprite
klasę i tak dalej. Technikę tę zademonstrowano w przykładzie Space Invaders w materiałach Windows 7 Phone Jumpstart Session 2 .
Alternatywnie, mógłbym zamiast tego przypisać większą część renderowania i kierowania odpowiedzialnością za grę w GameScreen
klasie; klasa ta i jej pochodne zachowują się bardziej jak formularze lub strony internetowe pod względem odpowiedzialności. Klasy sprite są prostszymi kontenerami o znacznie mniejszej logice.
Jest to technika stosowana w grze Alien Sprite w zestawie Windows 7 Phone Training Kit i innych przykładach menedżera stanu gry.
Jakie jest właściwe podejście obiektowe do projektowania klas w rozwoju gier?