Предыдущая Следующая
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; Предыдущая Следующая
|