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

Теперь переходим к методу Update() класса Gamel. В этом методе мы поменяем конструкцию обновления состояния игры с учетом появления в игре меню и сделаем это следующим образом.

protected override void Update(GameTime gameTime)

{

keyboardState = Keyboard.GetState(); // Выход в меню из игры

if (keyboardState.IsKeyDown(Keys.Escape))

{

menuState = true;

}

platform.spritePosition = new Vector2(Window.ClientBounds.Width/ 2,

// Показываем меню

174 Создаем игровое меню

Проект Menu 175

if (menuState == true) {

// Переход курсора по меню

if (keyboardState.IsKeyDown(Keys.Up))

{

menu.cursorPositionGame = new Vector2(650, 400); menu.cursorPositionExit = new Vector2(700, 550); cursorState = 1;

}

else if (keyboardState.IsKeyDown(Keys.Down))

{

menu.cursorPositionGame = new Vector2(700, 400); menu.cursorPositionExit = new Vector2(650, 550); cursorState = 2;

}

// Обрабатываем нажатие клавиши Enter

if (keyboardState.IsKeyDown(Keys.Enter) && cursorState == 1)

{

this.NewGame(); menuState = false;

}

else if (keyboardState.IsKeyDown(Keys.Enter) && cursorState == 2)

{

this.Exit();

} }

else // Запускаем игру

{

Pause();

if (paused == false)

{

double elapsed = gameTime.ElapsedGameTime.TotalSeconds; for (int i = 0; sprite.Length > i;

{

sprite[i].UpdateFrame(elapsed);

}

MoveSprite();

MovePlatform();

Collisions();

}

}

base.Update(gameTime);

}

Когда вы только запускаете игру, то попадаете в меню игры, потому что переменная menuState равна значению true. Следовательно, вы попадаете в первый блок кода после ключевого слова if, а все, что следует после ключевого слова else , пропускается и не выполняется.

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

кам, а также обрабатываем нажатие клавиши Enter. Механизм здесь такой: если нажата клавиша Вверх, то мы сдвигаем позицию таблички с надписью Игра влево и присваиваем переменной cursorState значение, равное единице. В этом состоянии, если пользователь нажмет клавишу, сработает блок кода, запускающий

игру.

// Обрабатываем нажатие клавиши Enter

if (keyboardState.IsKeyDown(Keys.Enter) SS cursorState == 1)

і

this.NewGame(); menuState = false;

}

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


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

Горяченькое

Друзья

Hosted by uCoz