Sono nel mezzo dello sviluppo di un gioco basato su sprite 2D per Windows 7 Phone, usando XNA. La formazione e le esercitazioni disponibili sono piuttosto utili, ma il problema che devo affrontare è che ognuno di loro si avvicina in modo diverso al proprio design di classe e il codice non è particolarmente ben ponderato. Di conseguenza, è stato difficile per me comprendere bene quali responsabilità dovrei affidare a una determinata classe.
Ad esempio, potrei avere una classe sprite di base BaseSprite
che sa come disegnare se stessa, controllare le collisioni, ecc. Potrei quindi avere una AnimatedSprite
classe che saprebbe navigare nel suo foglio sprite, una ExplodingSprite
classe e così via. Questa tecnica è dimostrata nell'esempio di Space Invaders nei materiali Jumpstart Session 2 di Windows 7 .
In alternativa, potrei invece posizionare la maggior parte del rendering e della gestione della responsabilità del gioco in una GameScreen
classe; quella classe e le sue classi derivate si comportano più come moduli o pagine Web in termini di responsabilità. Le classi Sprite sono contenitori più semplici con molta meno logica.
Questa è la tecnica utilizzata nel gioco Alien Sprite di Windows 7 Phone Training Kit e in altri esempi di manager dello stato di gioco.
Qual è l'approccio corretto alla progettazione di classi orientato agli oggetti nello sviluppo di giochi?