矢印キーでシップを動かす

上下左右の矢印キーで、自機を操作します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. 透明色を設定したシップの画像を、上下左右の矢印キーで操作します。
    2Dシューティングゲームの基礎となるプログラムです。
    このプログラムでは、次の画像をリソースとして組み込んでいます。
    操作のテストをするだけなら、どんな画像でも構わないので、適当なものを調達してきて下さい。
    画像 説明
    ship.png シップの画像(横=80, 縦=80)
    画像をリソースとして組み込む方法は 画像をリソースとして組み込む を参照して下さい。
  2. Game1.cs を編集して、上下左右の矢印キーで自機を操作するプログラムを作成します。
    class Game1 の最初に、次の領域を定義して下さい。
    ship は、自機の画像(横=80, 縦=80)です。
    pos は、自機の画像を描画する座標で、矢印キーで操作します。
            Texture2D   ship;        //自機テクスチャ
            Vector2     pos;         //自機の座標
        
  3. LoadContent() メソッドに Texture2D に画像をロードするコードを追加します。
    "ship" は Asset Name に表示されている ID です。
    pos.X = 300; pos.Y = 200; はプログラムを起動した直後のシップの座標です。
                // TODO: use this.Content to load your game content here
                ship = Content.Load<Texture2D>("ship");         //自機テクスチャ読込み
                pos.X = 300;
                pos.Y = 200;
            }
        
  4. Update() メソッドで、矢印キーを検出してシップの座標を設定します。
    移動の速さは 4 の値で調整して下さい。
                // Allows the game to exit
                if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed ||
                    Keyboard.GetState().IsKeyDown(Keys.Escape)) this.Exit();
    
                // TODO: Add your update logic here
                KeyboardState keyState = Keyboard.GetState();
                if (keyState.IsKeyDown(Keys.Left))  pos.X -= 4;
                if (keyState.IsKeyDown(Keys.Right)) pos.X += 4;
                if (keyState.IsKeyDown(Keys.Up))    pos.Y -= 4;
                if (keyState.IsKeyDown(Keys.Down))  pos.Y += 4;
        
  5. Draw() メソッドにシップを描画するコードを追加します。
    pos の座標に ship を描画します。
                // TODO: Add your drawing code here
                spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
                spriteBatch.Draw(ship, pos, Color.White);
                spriteBatch.End();
        
  6. メニューからコンパイルして実行して下さい。
    矢印キーを操作して、シップが動くことを確認して下さい。

【NOTE】

XBOX 360 のコントローラでも操作が出来るようにプログラムするときは「|| 記号」で結合します。
Microsoft Xbox 360 Controller for Windows 3700円
if (GamePad.GetState(PlayerIndex.One).DPad.Left == ButtonState.Pressed
    || keyState.IsKeyDown(Keys.Left))   pos.X -= 4;
if (GamePad.GetState(PlayerIndex.One).DPad.Right == ButtonState.Pressed
    || keyState.IsKeyDown(Keys.Right))  pos.X += 4;
if (GamePad.GetState(PlayerIndex.One).DPad.Up == ButtonState.Pressed
    || keyState.IsKeyDown(Keys.Up))     pos.Y -= 4;
if (GamePad.GetState(PlayerIndex.One).DPad.Down == ButtonState.Pressed
    || keyState.IsKeyDown(Keys.Down))   pos.Y += 4;

超初心者の方のために全ソースコードを掲載します。 (^_^;)
全ソースコード

前田稔(Maeda Minoru)の超初心者のプログラム入門

超初心者のプログラム入門(XNA(C#) game program)