Приставки
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
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

Теперь переходим к методу Update() класса Gamel. В этом методе мы поменяем конструкцию обновления состояния игры с учетом появления в игре меню и сделаем это следующим образом.

protected override void Update(GameTime gameTime) {

GamePadState currentState = GamePad.GetState(Playerlndex.One);

// Показываем меню

if (menuState == true)

{

// Переход курсора по меню

if (currentState.DPad.Up == ButtonState.Pressed)

{

menu.cursorPositionGame = new Vector2(850, З80); menu.cursorPositionExit = new Vector2(900, 500); cursorState = 1;

}

else if (currentState.DPad.Down == ButtonState.Pressed)

Проект Menu 223

{

menu.cursorPositioriGame = new Vector2(900, 380); menu.cursorPositionExit = new Vector2(850, 500); cursorState = 2;

}

// Обрабатываем нажатие кнопки A

if (currentState.Buttons.A ==ButtonState.Pressed&&cursorState == 1)

{

this.NewGame(); menuState = false;

}

elseif(currentState.Buttons.A==ButtonState.Pressed&&cursorState==2)

{

this.Exit();

}

}

else // Запускаем игру

{

// Выход в меню

if (currentState.Buttons.Back == ButtonState.Pressed)

{

menuState = true;

}

} }

base.Update(gameTlme);

}

Когда вы только запускаете игру, то попадаете в меню игры, потому что переменная menuState равна значению true. Следовательно, вы попадаете в первый блок кода после ключевого слова if, а все, что следует после ключевого слова else, пропускается и не выполняется.

В первом блоке кода, следующем после ключевого слова if, все связано только с работой меню. Здесь мы организуем механизм перехода курсора по табличкам, а также обрабатываем нажатие кнопки А. Если на джойстике выполнена команда Вверх, то мы сдвигаем позицию таблички с надписью Игра влево и присваиваем переменной cursorState значение, равное единице. Когда пользователь в этом игровом состоянии нажмет кнопку с буквой А, то сработает блок кода, запускающий игру.

// Обрабатываем нажатие кнопки А

if (currentState.Buttons.A == ButtonState.Pressed&scursorState == 1)

{

this.NewGame(); menuState = false;

}

В этом коде мы вызываем метод NewGame() для определения новых игровых позиций и меняем значение булевой переменной menuState на false, что авто-

224 Создаем игровое меню

матически выводит работу программы из блока кода, следующего за ключевым словом if. В данной ситуации уже будет выполняться исходный код, следующий за ключевым словом else. Таким образом, из меню игры мы переходим непосредственно в игровой процесс, где будем постоянно отслеживать состояние переменной menuState. Как только пользователь нажмет кнопку Back, то переменная menuState меняет свое состояние на true, а значит, игра останавливается, и мы выходим из игры в меню.


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

Горяченькое

Друзья

Hosted by uCoz