2012-04-19 16 views
0

私の3つの画面/状態はすべて正常に機能しますが、私は4番目の情報画面として機能します。これまでのところ良いですが、ゲームを実行して 'H'キーを押すと、画面が別の背景に変わることはありません。私は、画面を描画しています。ここGamestateが正常に機能しない

protected override void Update(GameTime gameTime) 
{ 
    switch (GameState) 
    { 
     case 1: UpdateStarted(gameTime); 
      break; 

     case 2: UpdatePlaying(gameTime); 
      break; 

     case 3: UpdateEnded(gameTime); 
      break; 

     case 4: UpdateInformation(gameTime); 
      break; 
    } 

    base.Update(gameTime); 
} 

public void UpdateInformation(GameTime currentTime) 
{ 
    if (Keyboard.GetState().IsKeyDown(Keys.H)) 
    { 
     GameState = 4; 
    } // GAMESTATE 4 which is the instruction/Information screen. 
} 

これは、更新方法でゲームの状態のためのコードは次のとおりです。以下のコードです。それはちょうど私のHキーが応答していないですが、

protected override void Draw(GameTime gameTime) 
{ 
    switch (GameState) 
    { 
     case 1: DrawStarted(gameTime); 
      break; 

     case 2: DrawPlaying(gameTime); 
      break; 

     case 3: DrawEnded(gameTime); 
      break; 

     case 4: DrawInformation(gameTime); 
      break; 
    } 
} 

私はこれが役に立てば幸い、私のSキーはよく反応すると、ゲームを開始します。

public void DrawInformation(GameTime currentTime) 
{ 
    spriteBatch.Begin(); 
    spriteBatch.Draw(InfoBackground, Vector2.Zero, Color.White); 
    spriteBatch.End(); 
} 

は、以下の状態の組み合わせ抽選情報コードです。 4つの州/スクリーンは「Gamestate」に対応していますか? ありがとうございます。

答えて

1

Hキーは更新情報であるためH鍵は、あなたの更新コードので、動作しません...

何、それが実際にはある:あなたが情報画面にいる場合は、に行くのプレスH情報画面(意味をなさない)

あなたのH検出コードをどこか適切な場所に移動する必要があります。あなたのS検出コードはどこですか?

また、ゲームの状態に数値の代わりに列挙型を使用することをお勧めします。

こうして、維持し理解するのがずっと簡単です。 (下の例を参照)

switch(GameState) 
{ 
    case gameStates.Started: 
     //Do something 
     break; 
} 
関連する問題