Предыдущая Следующая
Добавим в игру логику 363
10% во% 10%
Рис. 21.7. Зона искажения телевизора
необходимо сосредоточить свое внимание. Дополнительно в нижней части выводится текущий уровень игры. На каждом новом уровне мы будем увеличивать скорость падения мячей.
Для контроля окончания игры по причине выигрыша уровня используется следующая конструкция кода:
if (scoreO >= 20 && score1 >= 20 && score2 >= 20)
{
gameState = CurentGameState.VictoryScreen; level += 1;
if (level > 8) level = 1;
}
В коде экран VictoryScreen представляет экран победы. Исходный код этого класса фактически идентичен заставкам и меню игры, с той лишь разницей, что на экране присутствуют всего три команды: Продолжить, Меню и Выход. Техника обработки этих команд идентична схеме работы меню игры. Этот код нужно вызвать в основном цикле игры, чтобы он обновлялся на каждой итерации. Полный исходный код окончательной версии игры вы найдете на компакт-диске в папке Code\Chapter21\Football_arrows.
Если игрок упустит мяч на поле, то в работу включается уже другая конструкция кода.
if(ball[i].position.Y < -32)
{
ball[i].position.Y = ball[i].position.Y; gameState = CurentGameState.GameOverScreen; Sound.PlayCue(soundList.Over);
}
364 Последние штрихи
Здесь мы имеет также новую заставку GameOverScreen и новый класс GameOverScreen. Это класс однотипен и похож на все заставки и меню игры, разобраться самостоятельно с ним вам не составит труда. Единственное, на что я еще хочу обратить ваше внимание, - так это на новый механизм обработки нажатия кнопки джойстика Triggers.Right в классе Gamel.
Дело в том, что ситуация с длительностью удержания нажатия этой кнопки абсолютно аналогична рассмотренной нами ситуации с нажатием кнопки А. В связи с этим нам также необходимо добавить в код идентификатор отпускания нажатой кнопки Triggers.Right. Для этих целей используется та же методика, что и для кнопки.
Сначала объявляем в глобальных переменных новую булеву переменную triggersReleased со значением true.
bool triggersReleased = true;
А затем в методе GamePadClick() создаем проверку нажатия и отпускания кнопки Triggers.Right. Дополнительно в обработке событий по нажатии кнопки GamePadThumbSticks.Left было изменено цифровое значение, определяющее степень нажатия этой кнопки и скорость движения прицела по экрану.
void GamePadClick() {
GamePadState currentState = GamePad.GetState(Playerlndex.One);
Тестирование конечной версии игры выявило неудачный подбор числа, определяющего степень нажатия кнопки (по сравнению с предыдущими примерами). Поэтому значение степени нажатия кнопки было уменьшено, а также уменьшена скорость движения прицела, что дало возможность в игре производить более точное прицеливание по мячам. Предыдущая Следующая
|