Вот правильный метод!
Создание класса GameOverScreen:
public class GameOverScreen
{
private Texture2D texture;
private Game1 game;
private KeyboardState lastState;
public GameOverScreen(Game1 game)
{
this.game = game;
texture = game.Content.Load<Texture2D>("GameOverScreen");
lastState = Keyboard.GetState();
}
public void Update()
{
KeyboardState keyboardState = Keyboard.GetState();
if (keyboardState.IsKeyDown(Keys.Enter) && lastState.IsKeyUp(Keys.Enter))
{
game.StartGame();
}
else if (keyboardState.IsKeyDown(Keys.Escape) && lastState.IsKeyUp(Keys.Escape))
{
game.Exit();
}
lastState = keyboardState;
}
public void Draw(SpriteBatch spriteBatch)
{
if (texture != null)
spriteBatch.Draw(texture, new Vector2(0f, 0f), Color.White);
}
}
Реализация класса GameOverScreen
Теперь у нас естьКласс GameOverScreen. Нам нужно добавить код в Game1.cs для его реализации.
Сначала нам понадобится переменная для нового экрана.Вверху класса Game1 добавьте новый
GameOverScreen object:
StartScreen startScreen;
GamePlayScreen gamePlayScreen;
GameOverScreen gameOverScreen;
Далее нам нужно добавить регистр в оператор switch в методе Game1.Update () для GameOverScreen:
case Screen.GameOverScreen:
if (gameOverScreen != null)
gameOverScreen.Update();
break;
И мы должны сделать то же самое для метода Draw ():
case Screen.GameOverScreen:
if (gameOverScreen != null)
gameOverScreen.Draw(spriteBatch);
break;
Теперь нам нужно добавить метод EndGame ()это закроет GamePlayScreen и откроет GameOverScreen.Это будет вызвано, когда условие игры закончено.
public void EndGame()
{
gameOverScreen = new GameOverScreen(this);
currentScreen = Screen.GameOverScreen;
gamePlayScreen = null;
}
Также необходимо внести одно незначительное изменение в метод StartGame ().На GameOverScreen мы собираемся дать пользователю возможность перезапустить игру, которая вызовет метод StartGame ().Итак, в конце метода StartGame () нам просто нужно добавить одну строку кода, чтобы установить для gameOverScreen значение null.
gameOverScreen = null;
Условие завершения игры
Последнее, что нам нужно сделать, это позаботиться о том, чтобы игра закончилась, что будет обработано в классе GamePlayScreen.Откройте GamePlayScreen.cs.Первое, что нам нужно здесь, это новое целое число, чтобы сохранить количество жизней, которое имеет игрок, добавьте его в начало класса: Например:
int lives = 3;
Это значение нене должно быть 3, вы можете изменить его на что угодно, конечно.Затем нам нужно добавить код для уменьшения количества жизней каждый раз, когда кусок торта сдвигается с нижней части экрана и удаляется.Когда число жизней равно 0, вызывается Game1.EndGame ().Этот код будет добавлен в метод HandleFallingCake ().
if (toRemove.Count > 0)
{
foreach (Sprite cake in toRemove)
{
cakeList.Remove(cake);
--lives;
if (lives == 0)
game.EndGame();
}
}