Estoy a punto de desarrollar un juego 2D basado en sprites para Windows 7 Phone, usando XNA. La capacitación y los tutoriales disponibles son bastante útiles, pero el problema que enfrento es que cada uno de ellos aborda su diseño de clase de manera diferente, y el código no está particularmente bien factorizado. Como resultado, me ha resultado difícil comprender bien qué responsabilidades debo asignar a una clase en particular.
Por ejemplo, podría tener una clase de sprite base BaseSprite
que sepa cómo dibujarse, verificar colisiones, etc. Entonces podría tener una AnimatedSprite
clase que supiera cómo navegar por su hoja de sprites, una ExplodingSprite
clase, etc. Esta técnica se demuestra en el ejemplo de Space Invaders en los materiales de Windows 7 Phone Jumpstart Session 2 .
Alternativamente, podría colocar la mayor parte de la representación y ejecución de la responsabilidad del juego en una GameScreen
clase; esa clase y sus clases derivadas se comportan más como formularios o páginas web en términos de sus responsabilidades. Las clases de Sprite son contenedores más simples con mucha menos lógica.
Esta es la técnica utilizada en el juego Alien Sprite de Windows 7 Phone Training Kit y en otros ejemplos de administrador de estado del juego.
¿Cuál es el enfoque correcto orientado a objetos para el diseño de clases en el desarrollo de juegos?