Предыдущая Следующая
{
// показать экран об игре break;
case CurentGameState.GameScreen:
{
// старт игры break;
#region Using Statements using System;
using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Storage; #endregion
namespace GameState {
public class Gamel : Microsoft.Xna.Framework.Game
case CurentGameState.GameOverScreen:
private enum CurentGameState
// конец игры break;
}
case CurentGameState.VictoryScreen:
{
// экран выигрыша игры break;
SplashScreen,
MenuScreen,
AboutScreen,
GameScreen,
GameOverScreen,
VictoryScreen
}
CurentGameState gameState
CurentGameState.GameScreen;
Элегантное и в то же время действенное решение смены игровых состояний. Этот подход мы будем использовать в нашей трехмерной игре. На компакт-диске в папке Code\Chapter17\GameState находится новый проект под названием GameState. В этом проекте используется вышеописанная схема. Ниже в листинге 17.1 предложен исходный код класса Gamel, иллюстрирующий работу смены игровых состояний на базе структуры CurentGameState.
На данном этапе в исходном коде структурная переменная gameState представляет фазу игрового процесса. Так будет продолжаться до тех пор, пока мы не дойдем до главы, рассказывающей о создании меню и других игровых заставок.
//=========================================================================
/// <summary>
/// Листинг 17.1
/// Исходный код к книге:
GraphicsDeviceManager graphics; ContentManager content; KeyboardState keyboardState; int screenWidth, screenHeight;
/// <summary> /// Конструктор /// <summary> public Game1()
{
graphics = new GraphicsDeviceManager(this); content = new ContentManager(Services);
}
/// <summary> /// Инициализация /// <summary>
protected override void Initialize()
{
274 Смена игровых состояний
Улучшаем смену игровых состояний 275
GraphicsAdapter adapter =
graphics.GraphicsDevice.CreationParameters.Adapter;
graphics.PreferredBackßufferWidth = adapter.CurrentDisplayMode.Width; graphics.PreferredBackBufferHeight = adapter.CurrentDisplayMode.Height; graphics.IsFullScreen = true; graphics.ApplyChanges();
screenWidth = graphics.PreferredBackBufferWidth; screenHeight = graphics.PreferredBackBufferHeight; base.Initialize();
}
/// <summary>
/// Загрузка компонентов игры /// <summary> Предыдущая Следующая
|