Предыдущая Следующая
17.2. Улучшаем смену игровых состояний
Как вы помните, для смены игровых состояний в двухмерной игре мы использовали конструкцию управляющих операторов if/else. Теперь пришло время создать более действенный и профессиональный подход смены игровых состояний, основанный на использовании структур и структурных переменных.
В чем смысл этой методики? На самом деле все очень просто. Необходимо сформировать структуру данных, содержащую определенный набор переменных. Как вы знаете, структура - это совокупность переменных, предназначенных для хранения различной информации. Объявление структуры приводит к созданию набора данных, которые впоследствии может использовать любой объект структуры или структурная переменная.
Создать структуру в нашем контексте можно следующим образом:
private enum CurentGameState {
SplashScreen,
MenuScreen,
AboutScreen,
GameScreen,
GameOverScreen,
VictoryScreen
}
Как видите, названия переменных соответствуют определенным фазам игровых состояний. У нас эти переменные будут означать следующее:
□ SplashScreen - первая игровая заставка, появляющаяся при старте игры;
□ MenuScreen - меню игры;
□ AboutScreen - экран с информацией об игре;
□ GameScreen - игровой процесс;
□ GameOverScreen - экран проигрыша игры;
□ VictoryScreen - экран выигрыша игры.
Дополнительно можно ввести любое количество переменных для любого количества фаз игровых состояний. Далее при старте игры создается структурная переменная и инициализируется одним из значений структуры, например:
CurentGameState gameState = CurentGameState.SplashScreen;
Это значит, что в данный момент структурная переменная gameState ассоциируется со значением SplashScreen. Затем в игровом цикле необходимо просто создать проверку значения переменной gameState и в соответствии с ее значением выбрать текущие действия.
switch(gameState)
272 Смена игровых состояний
Улучшаем смену игровых состояний 273
case CurentGameState.SplashScreen:
{
// показать заставку break;
case CurentGameState.MenuScreen:
/// "Программирование компьютерных игр под Windows в XNA Game Studio Express"
/// Автор книги: Горнаков С. Г.
/// Глава 17
/// Проект: GameState
/// Класс: Gamel
/// Смена игровых состояний
/// <summary>
//=========================================================================
// показать меню break;
case CurentGameState.AboutScreen: Предыдущая Следующая
|