Приставки
Nintendo (Dendy)
Nintendo 64
Sega Genesis
Sega CD / 32x
Master System
Super Nintendo
Turbo Grafx 16
Sega Saturn
Sony PlayStation
GameBoy Advance
GameBoy / Color
Game Gear
Atari
Другие

Утилиты
Системные утилиты
GoodXXXX
Sega CD / 32x
Nintendo 64
Переводы, хакинг
Музыка

Мир приставочных игр

Версия 2.00a

Leonis © 2002-2009
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

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:


Предыдущая Следующая

Горяченькое

Друзья

Hosted by uCoz