Приставки
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
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

Проект 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() этого класса. В первом и во втором состояниях на экран поверх основного фона меню выводились две таблички. Теперь в дополнительном третьем состоянии эти таблички не выводятся, а на фоне меню рисуется табличка для межуровневого состояния.


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

Горяченькое

Друзья

Hosted by uCoz