Предыдущая Следующая
Теперь переходим к методу Update() класса Gamel. В этом методе мы поменяем конструкцию обновления состояния игры с учетом появления в игре меню и сделаем это следующим образом.
protected override void Update(GameTime gameTime)
{
keyboardState = Keyboard.GetState(); // Выход в меню из игры
if (keyboardState.IsKeyDown(Keys.Escape))
{
menuState = true;
}
platform.spritePosition = new Vector2(Window.ClientBounds.Width/ 2,
// Показываем меню
174 Создаем игровое меню
Проект Menu 175
if (menuState == true) {
// Переход курсора по меню
if (keyboardState.IsKeyDown(Keys.Up))
{
menu.cursorPositionGame = new Vector2(650, 400); menu.cursorPositionExit = new Vector2(700, 550); cursorState = 1;
}
else if (keyboardState.IsKeyDown(Keys.Down))
{
menu.cursorPositionGame = new Vector2(700, 400); menu.cursorPositionExit = new Vector2(650, 550); cursorState = 2;
}
// Обрабатываем нажатие клавиши Enter
if (keyboardState.IsKeyDown(Keys.Enter) && cursorState == 1)
{
this.NewGame(); menuState = false;
}
else if (keyboardState.IsKeyDown(Keys.Enter) && cursorState == 2)
{
this.Exit();
} }
else // Запускаем игру
{
Pause();
if (paused == false)
{
double elapsed = gameTime.ElapsedGameTime.TotalSeconds; for (int i = 0; sprite.Length > i;
{
sprite[i].UpdateFrame(elapsed);
}
MoveSprite();
MovePlatform();
Collisions();
}
}
base.Update(gameTime);
}
Когда вы только запускаете игру, то попадаете в меню игры, потому что переменная menuState равна значению true. Следовательно, вы попадаете в первый блок кода после ключевого слова if, а все, что следует после ключевого слова else , пропускается и не выполняется.
В первом блоке кода, следующем после ключевого слова if, все связано только с работой меню. Здесь мы организуем механизм перехода курсора по таблич-
кам, а также обрабатываем нажатие клавиши Enter. Механизм здесь такой: если нажата клавиша Вверх, то мы сдвигаем позицию таблички с надписью Игра влево и присваиваем переменной cursorState значение, равное единице. В этом состоянии, если пользователь нажмет клавишу, сработает блок кода, запускающий
игру.
// Обрабатываем нажатие клавиши Enter
if (keyboardState.IsKeyDown(Keys.Enter) SS cursorState == 1)
і
this.NewGame(); menuState = false;
}
В этом коде мы вызываем метод NewGame() для определения новых игровых позиций и меняем значение булевой переменной menuState на false, что автоматически выводит работу программы из блока кода, следующего за ключевым словом if. В данной ситуации уже будет выполняться исходный код, следующий за ключевым словом else. Таким образом, из меню игры мы переходим непосредственно в игровой процесс, где будем постоянно отслеживать состояние переменной menuState. Как только пользователь нажмет клавишу Esc, переменная menuState меняет свое состояние на true, а значит, игра останавливается, и мы выходим из игры в меню. Предыдущая Следующая
|