«Нажмите Enter, чтобы начать игру» XNA INTRO SCREEN - PullRequest
3 голосов
/ 17 октября 2010

Я создал вступительный экран с «Нажмите Enter, чтобы начать игру», и (и выход) из выхода из курса не проблема, но позволить игре начать немного сложнее.Любой совет?

Ответы [ 3 ]

2 голосов
/ 15 ноября 2010

Самый простой способ сделать это - настроить конечный автомат.Это выглядело бы очень просто.

enum GameState 
{
TitleScreen = 0,
GameStarted,
GameEnded,
}

Что-то в Game1.cs, или где бы вы ни обрабатывали нажатие этой кнопки, вы можете поместить переменную в свой класс, чтобы сохранить текущее состояние игры, в которой вы находитесь.в.

GameState currentGameState = GameState.TitleScreen;

Затем, прежде чем сделать ничью или обновить текущую кодированную игру, вы можете проверить текущее состояние игры

void Draw(GameTime time)
{
   if(currentGameState == GameStarted)
   {
       //Then handle the game drawing code here

   }
}

Метод обновления в основном будет выглядетьто же самое

1 голос
/ 21 марта 2011

Как говорит ninename, конечный автомат - путь сюда. Тем не менее, я бы посоветовал вам взглянуть на этот образец - http://create.msdn.com/en-US/education/catalog/sample/game_state_management - от Microsoft, а не на свой собственный.
Очень легко вносить и изменять висту, покрывая практически все, что вы можете сделать, включая обработку ввода.

1 голос
/ 13 февраля 2011

Система, которую я использую, работает хорошо (для меня)

Настройка интерфейса, называемого что-то вроде IContext. в этом есть void Draw () и void Update ().

тогда в игре есть общедоступный IContext под названием Context. вы просто вызываете context.update () и context.draw () в прилагаемом игровом цикле.

Тогда экран меню просто должен реализовать IContext. Вы передаете ссылку на свой игровой объект через его конструктор, который позволяет изменить контекст любого подключаемого объекта.

Таким образом, вы подключаете «меню» и меню, когда получаете клавишу Enter , которую вызываете this.game.context = new level01();

Надеюсь, это имеет смысл.

Ник

...