Предыдущая Следующая
Проект NewLevels 253
if(totalScore >= endScore) {
gameState = false; menuState = false; levelState = true; tempLevel = level;
level += 1; if(level > 8)
{
level = 1;
}
}
Здесь мы присваиваем переменной gameState значение false для вывода из игрового процесса пользователя. Переменная menuState также имеет значение false, но она и имела это значение раньше, тут мы просто подстраховываемся на всякий случай. Далее переменная levelState получает значение, равное true, что приведет нас в дальнейшем (после выхода из этого блока кода) к выполнению метода LevelSelect(). В конце блока кода переменной tempLevel присваивается значение текущего уровня. Сам уровень увеличивается на единицу, а в блоке кода
if(level > 8)
{
level = 1;
}
происходит проверка, достиг ли игрок последнего уровня. Если достиг, то сбрасываем level к первому уровню, если нет, то оставляем все как прежде.
Метод LevelSelect() следит за нажатыми пользователем кнопками джойстика и выбирает в связи с полученной информацией с устройства ввода определенные действия.
public void LevelSelect()
{
GamePadState currentState = GamePad.GetState(Playerlndex.One); if (currentState.Buttons.A == ButtonState.Pressed)
{
this.NewGame(level); menuState = false; levelState = false; gameState = true;
}
else if (currentState.Buttons.B == ButtonState.Pressed)
{
menuState = true; levelState = false; gameState = false;
}
254 Добавляем в игру новые уровни
else If (currentState.Buittons.X == ButtonState.Pressed) {
thls.Exlt();
}
}
В работе этой конструкции кода, думается, все предельно ясно, интересно другое: что показывает нам игра, когда работает межуровневый экран. В методе Draw() класса Gamel, где происходит прорисовка графической составляющей, также формируется логическая конструкция, позволяющая выбирать, что именно показывать в конкретный игровой момент. Особенно интересно состояние игры на межуровневом промежутке, когда переменная levelState равна значению true. Этот приведенный ниже блок кода относится к межуровневому состоянию игры.
lf(levelState == true)
{
spriteBatch.Begin(SpriteBlendMode.AlphaBlend); menu.DrawMenu(spriteBatch, 3);
spriteBatch.Draw(gameLevel, new Vector2(screenWidth/2 — gameLevel.Width / 2, screenHeight / 2 — gameLevel.Height/2), Color.White); spriteBatch.End();
}
Интересное нововведение происходит в строке:
menu.DrawMenu(spriteBatch, 3);
Ранее в классе Menu мы имели всего два состояния в методе Draw() этого класса. В первом и во втором состояниях на экран поверх основного фона меню выводились две таблички. Теперь в дополнительном третьем состоянии эти таблички не выводятся, а на фоне меню рисуется табличка для межуровневого состояния. Предыдущая Следующая
|