Приставки
Nintendo (Dendy)
Nintendo 64
Sega Genesis
Sega CD / 32x
Master System
Super Nintendo
Turbo Grafx 16
Sega Saturn
Sony PlayStation
GameBoy Advance
GameBoy / Color
Game Gear
Atari
Другие

Утилиты
Системные утилиты
GoodXXXX
Sega CD / 32x
Nintendo 64
Переводы, хакинг
Музыка

Мир приставочных игр

Версия 2.00a

Leonis © 2002-2009
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

if (level > 8) level = 1;

Рис. 22.6. Табло игры

break;

356 Последние штрихи

Добавим в игру логику 357

Как видите, у нас в коде добавляется новый экран VictoryScreen, представленный классом с одноименным названием. Исходный код этого класса фактически идентичен заставкам и меню игры, с той лишь разницей, что на экране присутствуют всего три команды: Продолжить, Меню и Выход. Техника обработки этих команд идентична схеме работы меню игры. Этот код нужно вызвать в основном цикле игры, чтобы он обновлялся на каждой итерации. Полный исходный код окончательной версии игры вы найдете на компакт-диске в папке Code\Final3d\ Footballarrows.

Если игрок упустит мяч на поле, то в работу включается уже другая конструкция кода.

if(ball[i].position.Y < -32)

{

ball[i].position.Y = ball[i].position.Y; gameState = CurentGameState.GameOverScreen; Sound.PlayCue(soundList.Over);

Здесь мы имеем также новую заставку GameOverScreen и новый класс GameOverScreen. Этот класс однотипен и похож на все заставки и меню игры, разобраться самостоятельно с ним вам не составит труда. Единственное, на что я еще хочу обратить ваше внимание, - так это на новый механизм обработки нажатия кнопки мыши в классе Game1.

Дело в том, что у мыши ситуация с длительностью удержания нажатой кнопки абсолютно аналогична рассмотренной нами ситуации с нажатием клавиш на клавиатуре. В связи с этим нам необходимо добавить в код идентификатор отпускания нажатой кнопки мыши. Специального метода у мыши, как у клавиатуры, для этих целей нет, поэтому мы прибегаем к небольшой хитрости.

Сначала объявляем в глобальных переменных новый объект, следящий за состоянием мыши.

MouseState oldMouseState;

А затем в методе MouseClick() проверяем состояние нажатой и отпущенной кнопки мыши:

void MouseClick()

// проверяем состояние мыши

if(mouseState.LeftButton == ButtonState.Pressed && oldMouseState.LeftButton == ButtonState.Released)

{

Sound.PlayCue(soundList.Shot);

Ray pickRay = GetPickRay();

Nullable<float> result0 = pickRay.Intersects(bb[0]); if(result0.HasValue == true)

{

ball[0].position.X = rand.Next(-(rand.Next(0, 80)), rand.Next(0, 80));

ball[0].position.Y = rand.Next(0, 80);

ball[0].position.Z = rand.Next(-(rand.Next(0, 50)), rand.Next(0, 150)); score0 += 1;

}

Nullable<float> result1 = pickRay.Intersects(bb[1]); if (result1.HasValue == true)

{

ball[1].position.X = rand.Next(-(rand.Next(0, 80)), rand.Next(0, 80));


Предыдущая Следующая

Горяченькое

Друзья

Hosted by uCoz