これは正しい方法です!今、私たちはそれを実装するためにGame1.csにコードを追加する必要があり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を作成します。
まず、新しい画面の変数が必要です。
case Screen.GameOverScreen:
if (gameOverScreen != null)
gameOverScreen.Update();
break;
:Game1クラスの最上部には、我々はGameOverScreenためGame1.Update()メソッドにswitch文にケースを追加する必要が新しい
GameOverScreen object:
StartScreen startScreen;
GamePlayScreen gamePlayScreen;
GameOverScreen gameOverScreen;
次を追加そして、我々は同じドローのための()メソッドを行う必要があります:今、私たちが必要
case Screen.GameOverScreen:
if (gameOverScreen != null)
gameOverScreen.Draw(spriteBatch);
break;
をGamePlayScreenを閉じてGameOverScreenを開くEndGame()メソッドを追加します。これは、ゲームオーバー条件が満たされたときに呼び出されます。
public void EndGame()
{
gameOverScreen = new GameOverScreen(this);
currentScreen = Screen.GameOverScreen;
gamePlayScreen = null;
}
一つのマイナーチェンジでは、同様StartGame()メソッドに行われる必要があります。 GameOverScreenでは、StartGame()メソッドを呼び出すゲームを再起動するオプションをユーザーに与えます。ですから、StartGame()メソッドの最後では、gameOverScreenをnullに設定するコードを1行追加するだけです。条件
私たちが行う必要がある最後の事以上
gameOverScreen = null;
ゲームはGamePlayScreenクラスで処理される条件ゲームオーバー、の世話をします。 GamePlayScreen.csを開きます。たとえば:
int lives = 3;
この値は、である必要はありません 私たちはここに必要がある最初の事は、プレイヤーは、クラスの先頭にこれを追加しました命の量を保持する新しい整数3、もちろんあなたが好きなものに変更することができます。 次に、ケーキのスライスが画面の下から外れて取り除かれるたびに、デクリメントするためのコードを追加する必要があります。 livesが0の場合、Game1.EndGame()が呼び出されます。このコードはHandleFallingCake()メソッドに追加されます。
if (toRemove.Count > 0)
{
foreach (Sprite cake in toRemove)
{
cakeList.Remove(cake);
--lives;
if (lives == 0)
game.EndGame();
}
}
this.Exit();怒ったのは誰?アプリケーション全体ではなく、ゲームページから出ていくことが重要です。 – harry180
新しい回答を確認する – Razor