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

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

2012/02/09

このトピックでは、このシリーズで実装する XNA Framework アプリケーションにレベルを追加する方法について説明します。この時点では、アプリケーションは画面内を移動する正方形のグラフィック オブジェクトで構成されています。前のセクションでは、正方形をユーザーがタップしたことを検出する機能を追加しました。これらのヒット (衝突) はユーザーの得点として記録されます。試用エクスペリエンスをデモンストレーションするために、ゲームに複数のレベルを追加します。次に、試用エクスペリエンス (以降のトピックで説明します) によって、ゲームのライセンス (試用またはフル) に基づいてユーザーがプレイできるレベル数を制限できます。このトピックで説明するレベルの実装では、各レベルで正方形が画面内を移動する速度を定義します。画面内をバウンドする正方形の動きは、レベルごとに速くなります。

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

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

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

注注:

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

試用エクスペリエンスをデモンストレーションするために、ゲームにレベルを追加します。1 つのレベルを完了したプレーヤーは、ゲームの次のレベルに進もうとします。このトピックでは、グラフィック オブジェクトが画面内をバウンドする速度を上昇させて、レベルごとにゲームが変化するようにします。

ゲームにレベルを追加するには

  1. Game1 クラスの先頭に次の変数を追加します。各レベルの速度は、List<Vector2> に格納されます。ユーザーがプレイしている現在のレベルは、currentLevel 変数に格納されます。

    
            // Each level in the game changes the speed of the sprite moving across the screen.
            // Store the speed per level in a List<Vector2>
            List<Vector2> levels;
    
            // The current level that the user is playing
            int currentLevel;
    
    
  2. Initialize メソッドで、spriteSpeed を設定する行を次のコード行に置き換えます。このコードは、3 つのゲーム レベルを含むゲームを初期化します。各レベルは、画面内を移動するグラフィック オブジェクトの速度を表す Vector2 オブジェクトを定義します。currentLevel は 1 に初期化され、spriteSpeed は、ここで定義されたレベルのリストから取得された最初のレベルの速度に初期化されました。

    
                // Initialize the list of level speeds.
                levels = new List<Vector2>();
                levels.Add(new Vector2(50.0f, 50.0f));
                levels.Add(new Vector2(100.0f, 100.0f));
                levels.Add(new Vector2(200.0f, 200.0f));
    
                // Start the game at level one.
                currentLevel = 1;
    
                // Set the initial speed of the sprite.
                spriteSpeed = levels[currentLevel - 1];
    
    
  3. Game1 クラスで、次のメソッドを追加します。GoToNextLevel は、レベルの最大値 (levels.Count) に対して currentLevel をチェックします。ユーザーが最大レベルに達していない場合は、currentLevel が増分され、グラフィック オブジェクの速度がこの新しいレベルの速度に設定されて、ゲームのカウンターがリセットされます。この例では、ゲーム終了エクスペリエンスは定義されていません。ユーザーがレベルの最大値に達した場合は、そのレベルが再度プレイされます。

    
            private void GoToNextLevel()
            {
                // Are all levels completed
                if (currentLevel == levels.Count)
                {
                    // game over
                    ResetGameCounters();
                }
                else
                {
                    currentLevel++;
                    spriteSpeed = levels[currentLevel - 1];
                    ResetGameCounters();
                }
    
            }
    
            private void ResetGameCounters()
            {
                collisionCount = 0;
                spritePosition.X = 0;
                spritePosition.Y = 0;
            }
    
    
  4. [ビルド]、[ソリューションのビルド] の順にメニュー コマンドを選択してソリューションをビルドします。プロジェクトはエラーを出すことなくビルドされるはずです。[エラー一覧] ウィンドウをまだ開いていない場合は、[表示]、[エラー一覧] の順にメニュー コマンドを選択して開きます。エラーがある場合、前述の手順を確認してエラーしを修正し、ソリューションをもう一度ビルドします。

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

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

  6. [デバッグ]、[デバッグ開始] の順にメニュー コマンドを選択してアプリケーションを実行します。これによってエミュレーター ウィンドウが開き、アプリケーションが起動します。グラフィックが画面内を飛び跳ねているのが表示されます。

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

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

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

このシリーズの次のトピックでは、ユーザーがゲームをプレイする際に画面に現在の得点とレベルを表示する方法について説明します。これで単純なゲームが作成され、ユーザーの得点を追跡する機能が追加されました。また、ゲームに 3 つのレベルを組み込みました。スコアボードを追加すると、現在の得点とレベルをいつでも確認できるようになります。

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

表示:
© 2015 Microsoft