C # / XNA Новичок с вопросом о дизайне - PullRequest
0 голосов
/ 17 января 2011

Я пытаюсь создать маленькую игру, используя C # и XNA, перед тем как начать, я хотел убедиться, что этот подход имеет смысл:

По сути, я хочу создать класс GameObject, который содержит все элементы, общие для всего, что я собираюсь нарисовать на экране, будь то оружие, монстр, человек, пикап и т. Д.

Так что я подумал, что мне следует создать абстрактный класс GameObject со свойствами, чтобы установить Texture2D, местоположение Vector2, метод Draw () и метод Move ().

Кроме того, поскольку у меня есть Люди и Монстры, я мог бы создать базовый класс с названием Biped или аналогичный и присвоить ему свойство AttackBehavior (которое само по себе является классом), чтобы затем я мог создавать различные методы атаки (Люди атакуют монстров). , Монстры атакуют людей). Я бы использовал абстрактную реализацию метода Move () в своем классе GameObject, чтобы я мог переопределить его для предметов, которые не двигаются (оружие и т. Д.) И назначать разные скорости движения, шаблоны и т. Д. Моим Людям и монстрам.

Итак, мои вопросы:

  • Имеет ли смысл этот шаблон проектирования? Я читал шаблоны проектирования Head First и читал о создании объектов (отсюда мой объект AttackBehavior)
  • Какой тип кода я должен добавить в мой Game1.cs? Должно ли это быть 'View' в шаблоне MVC?

Ответы [ 2 ]

2 голосов
/ 17 января 2011

На первый взгляд, да, дизайн имеет смысл ... но по своему опыту (конечно, YMMV) я обнаружил, что попытка начать с разработки глубокой иерархии объектов с начальных результатов приводит к принятию решений, которые ограничат вас потом. Поскольку каждая игра уникальна, я получаю лучшие результаты, когда только начинаю кодировать, добавлять элементы в игру и рефакторинг по ходу игры. Если есть два класса со схожей функциональностью, то я либо заставляю их наследовать от общей базы, либо преобразую в общий класс, который можно использовать повторно. Это дает вам лучшее из обоих миров.

На ваш второй вопрос я искренне рекомендую вам организовать свою игру, используя пример управления состоянием игры:
http://create.msdn.com/en-us/samples/gamestatemanagement

скачайте образец и выучите его хорошо ... это проверенный и верный шаблон

0 голосов
/ 20 января 2011

С другой стороны, я не думаю, что оружие когда-либо должно относиться к тому же классу, что и то, что может двигаться.

Также попробуйте отделить вашу "модель" от ваших спрайтов (подумайтеMVC для игр).Это не всегда может быть лучшей идеей иметь базовый объект, который позволяет визуально расширять поведение.Но для простой игры это самый быстрый (и, возможно, лучший) подход.Действительно важно, какого размера ты думаешь.(Всегда начинайте с малого).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...