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

bool downReleased = true;

protected override void Update(GameTime gameTime)

{

if(keyboardState.IsKeyDown(Keys.Down) == true && downReleased == true)

{

state += 1;

}

downReleased = keyboardState.IsKeyUp(Keys.Down); base.Update(gameTime);

}

В этой версии кода мы имеем дополнительную булеву переменную downReleased, значение которой будет всегда равно true, если клавиша «вниз» не нажата. Как только клавиша «вниз» нажата и не отпущена, значение переменной моментально изменяется на false и блок кода, следующий за конструкцией операторов if/else, не выполняется. Все очень просто. Такой подход в отслеживании состояния дополнительной булевой переменной позволяет создать идеальную систему проверки отпускания любой нажатой клавиши.

Для работы с нашим меню и заставками нам необходимо в исходном коде класса Game1 создать три булевых переменных для отслеживания нажатий на клавиши Enter, Down и Up.

bool downReleased = true; bool upReleased = true; bool enterReleased = true;

А уже в конце метода Update() класса Game1 мы будем следить за отпусканием нажатых клавиш следующим образом.

downReleased = keyboardState.IsKeyUp(Keys.Down); upReleased = keyboardState.IsKeyUp(Keys.Up); enterReleased = keyboardState.IsKeyUp(Keys.Enter);

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

Смена игровых состояний в классе Game1

351

В метод Update() первым в работу включается блок кода, обрабатывающий нажатие клавиши Enter в момент показа титульной заставки игры.

protected override void Update(GameTime gameTime)

{

keyboardState = Keyboard.GetState();

switch(gameState)

{

case CurentGameState.SplashScreen:

{

if (keyboardState.IsKeyDown(Keys.Enter))

gameState = CurentGameState.MenuScreen;

break;

}

case CurentGameState.MenuScreen:

{

В момент запуска игры значение переменной state у нас равно единице.

public int state = 1;

Каждое нажатие на клавиатуре клавиш «вверх» или «вниз» автоматически будет изменять значение переменной state. Если нажата клавиша с командой вниз (Keys.Down), то значение переменной state увеличивается на единицу.

if (keyboardState.IsKeyDown(Keys.Down) == true && downReleased == true)

{

state += 1;

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

if (state > 5) state = 1;

}

В этом случае если state станет больше пяти, то ей будет присвоено значение, равное единице. То есть как только позиция подложки на экране станет больше позиции, отведенной для пятой и последней команды меню, желтая текстура получит позицию, равную первой команде. Таким образом, желтая подложка меню будет перемещаться по командам меню циклично сверху вниз, а в следующем блоке кода - и снизу вверх.


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

Горяченькое

Друзья

Hosted by uCoz