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

break;

}

case CurentGameState.BooksScreen:

{

if (keyboardState.IsKeyDown(Keys.Escape)) gameState = CurentGameState.MenuScreen;

break;

}

case CurentGameState.GameScreen:

{

if (keyboardState.IsKeyDown(Keys.Escape)) gameState = CurentGameState.MenuScreen;

MoveBall(); MouseClick(); break;

}

case CurentGameState.GameOverScreen:

{

break;

}

case CurentGameState.VictoryScreen:

{

break;

} }

base.Update(gameTime);

}

22.5.3. Обновляем графику в методе Draw()

В методе Draw() класса Game1 на основе значения структурной переменной gameState происходит рисование того или иного экрана. Изначально при запуске игры переменная gameState равна CurentGameState.SplashScreen, и это значит, что первой на экране рисуется титульная заставка.

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

protected override void Draw(GameTime gameTime)

{

graphics.GraphicsDevice.Clear(Color.CornflowerBlue);

switch(gameState)

{

case CurentGameState.SplashScreen:

{

splash.DrawScreen(spriteBatch, graphics, screenWidth, screenHeight); break;

}

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

case CurentGameState.MenuScreen:

{

menuGame.DrawScreen(spriteBatch, graphics, screenWidth, screenHeight, gameTime, state); break;

}

case CurentGameState.HelpScreen:

{

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

Добавим в игру логику 355

help.DrawScreen(spriteBatch, graphics, screenWidth, screenHeight, gameTime); break;

}

base.Draw(gameTime);

case CurentGameState.AboutScreen:

{

about.DrawScreen(spriteBatch, graphics, screenWidth, screenHeight, gameTime); break;

}

case CurentGameState.BooksScreen:

{

books.DrawScreen(spriteBatch, graphics, screenWidth, screenHeight, gameTime); break;

}

case CurentGameState.GameScreen:

{

spriteBatch.Begin(SpriteBlencLMode.AlphaBlend);

spriteBatch.Draw(background, new Vector2(0, -50), Color.White); spriteBatch.End();

graphics.GraphicsDevice.RenderState.DepthBufferEnable = true; view = Matrix.CreateLookAt(camera, Vector3.Zero, Vector3.Up); proj = Matrix.CreatePerspectiveFieldOfView(FOV, aspectRatio, nearClip, farClip); for (int i = 0; ball.Length > i;


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

Горяченькое

Друзья

Hosted by uCoz