エクスポート (0) 印刷
すべて展開

方法: XNA Framework アプリケーションのスコアボードを表示する

2012/02/09

このトピックでは、XNA Framework アプリケーションの画面にテキストを書き込む方法について説明します。このシリーズの前のトピックでは、ゲームのインフラストラクチャとロジックを作成しました。画面内をバウンドする正方形をユーザーがタップしたことを検出する機能も実装しました。このヒット (衝突) 回数がユーザーの得点になります。さらに、ゲームに複数のレベルを追加しました。これらがすべて整ったので、次に、ゲームのスコアボードを表示する機能を追加します。スコアボードは、画面に現在の得点とレベルを表示するために使用します。

この手順の続きを行う前に、以下のトピックを完了してください。

  1. 方法: XNA Framework アプリケーションを作成する

  2. 方法: XNA Framework アプリケーションに競合検出機能を追加する

  3. 方法: XNA Framework アプリケーションにレベルを追加する

注注:

次の手順は、Visual Studio 2010 Express for Windows Phone 向けです。 Visual Studio 2010 Professional や Visual Studio 2010 Ultimate のアドインを使用している場合は、メニュー コマンドやウィンドウのレイアウトが多少異なる場合があります。

ゲームの進行状況を表示するには、画面にプレイ中の現在の得点とレベルを表示するスコアボードを、ゲームに追加します。

ゲームのスコアボードを表示するには

  1. [プロジェクト] メニューの [クラスの追加] をクリックして、WindowsPhoneGame1 プロジェクトに新しいクラスを追加します。[新しい項目の追加] ウィンドウが表示されます。追加する項目のリストで [クラス] を選択し、[名前] フィールドに「Scoreboard.cs」と入力します。[追加] をクリックして、プロジェクトにクラスを追加します。Scoreboard.cs という名前の新しいクラスがプロジェクトに追加されました。

  2. Scoreboard.cs ファイルを開き、次の using ディレクティブをファイルの一番上に追加します。

    
    using Microsoft.Xna.Framework;
    using Microsoft.Xna.Framework.Graphics;
    
    
  3. Scoreboard クラスの本文に次のコードを挿入します。このコードは、現在の得点用と現在のレベル用の 2 つのテキスト フィールドから成るスコアボードを定義します。画面上でのこれらのフィールドの位置は、次のコードで定義された scorePos ベクトルと levelPos ベクトルを使用して定義します。変数 _font は、画面にテキストをレンダリングする際に使用するフォントを格納するように定義されます。このクラスには、ゲームの得点とレベルを設定する ScoreLevel の 2 つのプロパティが含まれています。テキストのレンダリングに使用されるフォントは、Scoreboard コンストラクター内のクラスに渡されます。最後に、スコアボード クラスには、画面上の定義された位置に現在の得点とレベルをレンダリングする独自の Draw メソッドが含まれています。

    
            private Vector2 scorePos = new Vector2(20, 40);
            private Vector2 levelPos = new Vector2(20, 60);
    
            private SpriteFont _font;
    
            public int Score { get; set; }
            public int Level { get; set; }
    
            public Scoreboard(SpriteFont font)
            {
                _font = font;
            }
    
            public void Draw(SpriteBatch spriteBatch)
            {
                spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);
                spriteBatch.DrawString(_font, "Score:" + Score.ToString(), scorePos, Color.Black);
                spriteBatch.DrawString(_font, "Level:" + Level.ToString(), levelPos, Color.Black);
                spriteBatch.End();
            }
    
    

    これで、画面への得点の書き込みを管理するクラスが定義されました。このクラスは、次の手順で主要な Game1 クラスから呼び出されます。

  4. ソリューション エクスプローラーコンテンツ ノード (この例では WindowsPhoneGame1Content (Content) というノード) を右クリックし、[追加]、[新しい項目] の順に選択します。[新しい項目の追加] ウィンドウで [スプライト フォント] を選択し、[追加] をクリックします。プロジェクトに、SpriteFont1.spritefont という名前の新しいフォント オブジェクトが追加されます。

  5. Game1.cs で、クラスの先頭に次の変数を追加します。この変数は、ゲームで使用される Scoreboard クラスのインスタンスを格納するために使用されます。

    
    // Display the score and the level on the screen.
    Scoreboard scoreBoard;
    
    
  6. Game1 クラスで、LoadContent メソッドの末尾に次のコードを追加します。これにより、Scoreboard インスタンスが構築され、Score プロパティと Level プロパティが初期化されます。Scoreboard コンストラクターに渡される SpriteFont は、前の手順で追加したフォントの名前です。

    
    // Create the scoreboard and set the initial level and score values.
    scoreBoard = new Scoreboard(Content.Load<SpriteFont>("SpriteFont1"));
    scoreBoard.Level = currentLevel;
    scoreBoard.Score = collisionCount;
    
    
  7. CheckForTouchCollision メソッドで、collisionCount が増分される行の下に次のコード行を追加します。

    
    scoreBoard.Score = collisionCount;
    
    
  8. 前に定義した ResetGameCounters メソッドで、次のコード行を追加します。これにより、Score プロパティと Level プロパティがリセットされます。

    
    scoreBoard.Score = 0;
    scoreBoard.Level = currentLevel;
    
    
  9. Game1 クラスの Draw メソッドで、base.Draw(gametime) の呼び出しが行われる直前に次の行を追加します。これにより、ゲームが描画されるとスコアボードが更新されます。

    
    // Call the Draw method on the scoreBoard object to update the scoreboard.
    scoreBoard.Draw(spriteBatch);
    
    
  10. [ビルド]、[ソリューションのビルド] の順にメニュー コマンドを選択してソリューションをビルドします。プロジェクトはエラーを出すことなくビルドされるはずです。[エラー一覧] ウィンドウをまだ開いていない場合は、[表示]、[エラー一覧] の順にメニュー コマンドを選択して開きます。エラーがある場合、前述の手順を確認してエラーしを修正し、ソリューションをもう一度ビルドします。

  11. 標準のツール バーで、アプリケーションの展開対象を [Windows Phone Emulator] に設定します。

    エミュレーターを選択している標準ツールバー上のターゲット

  12. [デバッグ]、[デバッグ開始] の順にメニュー コマンドを選択してアプリケーションを実行します。これによってエミュレーター ウィンドウが開き、アプリケーションが起動します。グラフィックが画面内を飛び跳ねているのが表示されます。画面の隅にもスコアボードが表示されます。移動する正方形をタップすると、得点が加算されます。得点が 5 に達するたびに、レベルが変わります。その結果、正方形の動きが速くなります。ゲームには 3 つのレベルがあります。レベル 3 に達した場合、レベル 3 を繰り返しプレイできます。

  13. エミュレーターがタイムアウトしてロック画面になった場合、ロックを解除するには、画面の下部をクリックして、上方にスワイプします。

  14. コードにデバッグ ブレークポイントを設定するには、コードの目的の行にカーソルを置き、[デバッグ]、[ブレークポイントの設定/解除] の順にメニュー コマンドを選択します。

  15. デバッグを停止するには、[デバッグ] メニューの [デバッグの停止] を選択します。

これで、ゲームに複数のレベルとスコアボードが設定されました。これにより、プレーヤーの得点とレベルをゲーム中いつでも容易に確認できるようになります。このシリーズの次のトピックでは、このゲームに試用エクスペリエンスを追加して、ゲームが試用ライセンスの場合にユーザーがレベル 1 のみをプレイできるようにする方法について説明します。

方法: XNA Framework アプリケーションに試用エクスペリエンスを追加する

表示:
© 2014 Microsoft