クソゲーを作りながらMicrosoftの統合ゲーム開発環境「XNA Game Studio 3.0」を学習するWikiです。



内容


とりあえずカーソルキーとZキー、Xキーくらいが使えればいいので簡単に。

1. KeyboardクラスでGetState()してKeyboardStateを取得
2. KeyboardStateのインデクサでKeys列挙体を要素番号としてstate[Keys.Z]で状態を取得
3. state[Keys.Z] == KeyState.DownならZキーが押されている

という流れらしい。

前回のHello World文字を表示するプログラムを、カーソルキーでHello Worldの文字を移動、ZキーとXキーが押されていたら背景色を変える、というふうに修正してみる。

http://www.microsoft.com/japan/msdn/vstudio/expres...
「キーボード入力」を参考にします。

1. カーソルキーでHello Worldの文字を移動

  • 1. Game1.csの23行目辺りにHello Worldの位置を管理するVector2 posOfHelloWorldメンバ変数を追加します。



        Vector2 posOfHelloWorld = new Vector2(0, 0);
  • 2. 79行目辺りにカーソルキーが押されている場合の処理を書きます。



            KeyboardState ks = Keyboard.GetState();
            if (ks[Keys.Left] == KeyState.Down && posOfHelloWorld.X > 0)
                posOfHelloWorld.X--;
            if (ks[Keys.Right] == KeyState.Down && posOfHelloWorld.X < 600)
                posOfHelloWorld.X++;
            if (ks[Keys.Up] == KeyState.Down && posOfHelloWorld.Y > 0)
                posOfHelloWorld.Y--;
            if (ks[Keys.Down] == KeyState.Down && posOfHelloWorld.Y < 400)
                posOfHelloWorld.Y++;
左(Keys.Left)が押されている(KeyState.Down)&X座標が左端(0)より右にあるなら、Xを左(X--)へ。
右(Keys.Right)が押されている(KeyState.Down)&X座標が右端(600)より左にあるなら、Xを右(X++)へ。
上(Keys.Up)が押されている(KeyState.Down)&Y座標が上端(0)より下にあるなら、Yを上(Y--)へ。
下(Keys.Down)が押されている(KeyState.Down)&Y座標が下端(400)より上にあるなら、Yを下(Y++)へ。
  • 3. 103行目辺りのHello Worldを描画する処理でnew Vector2(0, 300)としていた部分をposOfHelloWorldに変えます。



            spriteBatch.DrawString(font, "Hello World", posOfHelloWorld, Color.White);
  • 4. F5キーで実行。



カーソルキーを使ってHello Worldの文字を右下のほうまで持っていってみた。

2. ZキーとXキーが押されていたら背景色を変える


  • 1. Game1.csの24行目辺りに背景色を管理するColor bgColorメンバ変数を追加します。



        Color bgColor = Color.Black;
  • 2. 89行目辺りにカーソルキーが押されている場合の処理を書きます。



            if (ks[Keys.Z] == KeyState.Down)
                bgColor = Color.Blue;
            if (ks[Keys.X] == KeyState.Down)
                bgColor = Color.Green;
Zが押されていたら、bgColorをBlueにする。
Xが押されていたら、bgColorをGreenにする。
  • 3. 103行目辺りの背景をクリアする処理でClear(Color.Red)としていた部分をbgColorに変えます。



            graphics.GraphicsDevice.Clear(bgColor);
  • 4. F5キーで実行。



Xキーを押して背景色を緑にしてみた。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

メンバーのみ編集できます