Я в розпалі розробки 2D-спрайтової гри для Windows 7 Phone, використовуючи XNA. Навчальні та навчальні посібники, доступні для цього, дуже корисні, але проблема, з якою я стикаюся, полягає в тому, що кожен з них підходить до свого дизайну класів по-різному, і код не має особливих обставин. В результаті мені складно було добре зрозуміти, які обов'язки я повинен надати певному класу.
Наприклад, я міг би мати базовий клас спрайтів, BaseSprite
який вміє малювати себе, перевіряти на колізії тощо. Тоді я міг би мати AnimatedSprite
клас, який би знав, як орієнтуватися на його спрайтовому аркуші, ExplodingSprite
класі тощо. Ця методика демонструється на прикладі Space Invaders у матеріалах Windows 7 Phone Jumpstart Session 2 .
Крім того, я можу замість цього розмістити основну частину візуалізації та виконання ігрової відповідальності в GameScreen
класі; цей клас та його похідні класи поводяться більше як форми чи веб-сторінки з точки зору своїх обов'язків. Класи спрайт - це більш прості контейнери зі значно меншою логікою.
Це методика, яка використовується в грі Alien Sprite в навчальному наборі для телефонів Windows 7 та інших прикладах менеджера ігрового стану.
Який правильний об’єктно-орієнтований підхід до дизайну класів при розробці гри?