2010-04-09 4 views
1

Я разработал несколько аркадных игр до сих пор и имеют следующую структуру в почти всех из них есть: 1 файл, который содержит класс, называемый ядром со следующими функциями:Лучшая структура кода для аркадных игр

инициализации()
welcome_screen()
menu_screen()
help_Screen()
play_game()
end_screen()

И еще один файл, называемый Game, который в основном вызывает все эти функции и контролирует поток игры. Кроме того, у меня есть классы для разных персонажей, когда это необходимо.

Является ли это хорошей структурой кода или мне нужно иметь разные файлы (классы) для различных функций, таких как экран приветствия, воспроизведение, экран справки и т. Д.? Как и в, вместо того, чтобы включать весь код для этих вещей в 1 файл, должен ли я иметь разные классы для каждого из них? Единственная проблема, которая, как мне кажется, может привести к тому, что мне нужны определенные переменные, такие как оценка, символы и т. Д., Которые являются общими для всех из них, поэтому у меня есть все эти функции в классе Kernel, чтобы все эти функции могли использовать эти переменные.

ответ

2

Сделайте то, что имеет для вас смысл, и постоянно наблюдайте за изменениями, которые вы можете сделать, чтобы сделать все это менее сложным. Вообще говоря, простой лучше, чем сложный, поэтому, если эта структура проста для вас, это хорошо. Когда он становится сложным (что будет, если вы будете работать над ним достаточно долго), измените его, чтобы сделать его простым.

Если «дизайн» не просил классов, не добавляйте их. Добавляйте вещи только по мере необходимости. Другими словами, «делайте простые вещи».

1

Вряд ли для этого есть «лучшая» структура, но вы можете рассмотреть различные шаблоны, которые помогут вам разделить ваш код на логические части.

Например, я пишу сейчас клон tetris/pentix для развлечения прямо сейчас. Он грубо моделируется в шаблоне MVC. У меня есть несколько статических контроллеров, которые обрабатывают различные части игры. Хотя дополнительный уровень вызовов может быть не самым эффективным, постоянный пользовательский ввод в моей игре исключает это из-за проблемы. Специфические требования вашей игры будут иметь аналогичные допуски/ограничения.

Вы можете увидеть код here.