Предыдущая Следующая
Теперь переходим к методу 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, а значит, игра останавливается, и мы выходим из игры в меню. Предыдущая Следующая
|