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

353

21.5.1. Создаем объекты для меню и заставок

Для вывода на экран меню и заставок нам необходимо в классе Game1 объявить объекты классов SplashScreen, MenuGame, HelpScreen, AboutScreen и BooksScreen .

private SplashScreen splash; private MenuGame menuGame; private HelpScreen help; private AboutScreen about; private BooksScreen books;

А затем и создать эти объекты.

splash = new SplashScreen(); menuGame = new MenuGame(); help = new HelpScreen(); about = new AboutScreen(); books = new BooksScreen();

После чего в методе Initialize() класса Game1 мы можем спокойно вызывать соответствующие методы классов SplashScreen, MenuGame, HelpScreen, AboutScreen и BooksScreen для загрузки в игру графики.

splash.InitializeSplashScreen(content, screenWidth, screenHeight); menuGame.InitializeMenuGameScreen(content, screenWidth, screenHeight); help.InitializeHelpScreen(content, screenWidth, screenHeight); about.InitializeAboutScreen(content, screenWidth, screenHeight); books.InitializeBooksScreen(content, screenWidth, screenHeight);

21.5.2. Обновляем состояние игры в методе Update()

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

if(currentState.Buttons.A == ButtonState.Pressed)

{

state += 1;

}

Если создать такое условие, то нажатие кнопки А и ее удерживание ведет к постоянному увеличению переменной state. И даже если вы нажмете кнопку и моментально ее отпустите, совсем не факт, что вы отпустили эту кнопку в тот момент, когда переменная увеличится всего на одну единицу. Любая задержка на-

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

жатия кнопки А ведет к увеличению переменной state, и проследить значение этой переменной и тем более управлять ею просто не возможно.

В связи с этим необходимо создать условие, которое вне зависимости от длительности нажатия и удерживания кнопки А (в данном случае) увеличивало бы переменную state ровно на одну единицу.

Чтобы приведенный выше код работал корректно, а переменная state изменялась ровно на одну единицу за одно нажатие кнопки А, можно использовать следующую конструкцию кода.

bool aReleased = true;

protected override void Update(GameTime gameTime) {


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

Горяченькое

Друзья

Hosted by uCoz