Ich bin gerade dabei, ein 2D-Sprite-basiertes Spiel für Windows 7 Phone mit XNA zu entwickeln. Die dafür verfügbaren Schulungen und Tutorials sind ziemlich hilfreich, aber das Problem, dem ich gegenüberstehe, ist, dass jeder von ihnen anders an sein Klassendesign herangeht und der Code nicht besonders gut faktorisiert ist. Infolgedessen war es für mich schwierig, genau zu verstehen, welche Aufgaben ich einer bestimmten Klasse übertragen sollte.
Zum Beispiel könnte ich eine Basis-Sprite-Klasse haben BaseSprite
, die weiß, wie sie sich selbst zeichnet, auf Kollisionen prüft usw. Dann könnte ich eine AnimatedSprite
Klasse haben, die weiß, wie sie in ihrem Sprite-Sheet, einer ExplodingSprite
Klasse usw. navigiert . Diese Technik wird im Space Invaders-Beispiel in den Materialien zu Windows 7 Phone Jumpstart Session 2 demonstriert .
Alternativ könnte ich stattdessen den Großteil des Renderns und Ausführens der Spielverantwortung in eine GameScreen
Klasse einordnen. Diese Klasse und ihre abgeleiteten Klassen verhalten sich in Bezug auf ihre Zuständigkeiten eher wie Formulare oder Webseiten. Sprite-Klassen sind einfachere Container mit viel weniger Logik.
Dies ist die Technik, die im Alien Sprite-Spiel des Windows 7 Phone Training Kits und in anderen Beispielen für den Spielstatus-Manager verwendet wird.
Was ist der richtige objektorientierte Ansatz für das Klassendesign in der Spieleentwicklung?