Предыдущая Следующая
if (keyboardState.IsKeyDown(Keys.Up) == true && upReleased == true)
{
state -= 1;
if (state < 1) state = 5;
}
В этой конструкции кода мы создаем обработку условия для нажатия клавиши с командой вверх (Keys.Up). Механизм изменения значения переменной state одинаков, как и в случае с командой вниз, с той лишь разницей, что изменение state ведется в обратную сторону.
В следующем блоке кода происходит обработка нажатия клавиши Enter. В зависимости от текущего значения переменной state (которая меняется по нажатии клавиш «вверх» и «вниз» и соответствует одной из выбранных команд меню) происходит изменение значения gameState, а значит, и выбор нового игрового состояния.
if (keyboardState.IsKeyDown(Keys.Enter) && enterReleased == true && state == 1)
{
gameState = CurentGameState.GameScreen;
}
if (keyboardState.IsKeyDown(Keys.Enter) && enterReleased == true && state == 2)
{
gameState = CurentGameState.HelpScreen;
}
if (keyboardState.IsKeyDown(Keys.Enter) && enterReleased == true && state == 3)
{
gameState = CurentGameState.AboutScreen;
}
if (keyboardState.IsKeyDown(Keys.Enter) && enterReleased == true && state == 4)
{
gameState = CurentGameState.BooksScreen;
}
if (keyboardState.IsKeyDown(Keys.Enter) && enterReleased == true && state == 5)
{
this.Exit();
}
break;
}
Для обработки нажатия клавиши Enter можно также использовать более упрощенную схему исходного кода, например вот такую:
if (keyboardState.IsKeyDown(Keys.Enter))
{
if (enterReleased == true && state == 1)
{
gameState = CurentGameState.GameScreen;
}
if (enterReleased == true && state == 2)
{
gameState = CurentGameState.HelpScreen;
}
352 Последние штрихи
Смена игровых состояний в классе Game1
353
if (enterReleased == true && state == 3)
{
gameState = CurentGameState.AboutScreen;
}
if (enterReleased == true && state == 4)
{
gameState = CurentGameState.BooksScreen;
}
if (enterReleased == true && state == 5)
{
this.Exit();
}
}
Далее в исходном коде класса Game1 и метода Update() в зависимости от значения структурной переменной gameState происходит обновление состояния игры.
case CurentGameState.HelpScreen:
{
if (keyboardState.IsKeyDown(Keys.Escape)) gameState = CurentGameState.MenuScreen;
break;
}
case CurentGameState.AboutScreen:
{
if (keyboardState.IsKeyDown(Keys.Escape)) gameState = CurentGameState.MenuScreen; Предыдущая Следующая
|