ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

キーボード入力

キーボードからの入力にはKeyクラスを使う。KeyクラスにはKey1-Key4の4種類ある。

  • Key1 キーボード+ジョイスティック(2ボタン)
  • Key2 キーボード+ジョイスティック(6ボタン)
  • Key3 キーボード(2ボタン)
  • Key4 キーボード(6ボタン)

akirameiさんのページ(はじめてのYaneSDK.NETその2 - 匣の向こう側 - あまりに.NETな)を参考にラインを動かすプログラムを作ってみた。

Key1 key = new Key1();
int PosX = 0;
int PosY = 0;

// TimerのTickイベント
private void OnTick(object sender, EventArgs e)
{
    // キー情報の更新
    key.Update();

    int dx = 0;
    int dy = 0;

    if (key.IsPress(1)) dy = -1;  // 上
    if (key.IsPress(2)) dy = +1;  // 下
    if (key.IsPress(3)) dx = -1;  // 左
    if (key.IsPress(4)) dx = +1;  // 右
    if (key.IsPress(5))  // スペース
    {
        dx *= 3;
        dy *= 3;
    }

    PosX += dx;
    PosY += dy;

    // ここで(PosX,PosY)の座標でラインの描画
}

カーソルキーで上下左右に移動し、スペースキー同時押しで3倍の移動。
akirameiさんのページでも書かれているように確かに同時押し3つ目のボタンが反応しないことがある。スペースキーでの加速が左上と左下の場合は反応するんだけど、右上と右下の場合は反応しない。SDLの問題なのかWindowsのキーボードの問題なのか。
ジョイスティックの場合はどうなんだろう。今度ジョイスティックを買ってきて試してみよう。