Visual Studio Windowsフォームアプリケーションを使用してC#で簡単なゲームを作成しようとしています。私は、ユーザーが対応するキーを使用して、青いボックスを上方向、右方向、下方向、左方向に自由に動かせるようにします。KeyDownイベントを使用してスムーズにコントロールを移動する
私は、ボックスの新しい場所を0.1秒ごとに検出するタイマと、実際にボックスの位置を変更するkeydownイベントを使用しています。 キーを押したままボックスを対応する方向に動かし続ける必要があります。
私の問題は、私の現在のプログラムは、ユーザーが最初にキーを押すと、ボックスが少し動いて、動きが止まる前に一時停止することを除いて、仕事をします。私は、このボックスを、最初のキーを押すことから、そのように一時停止することなく、よりスムーズに動かしたいと思っています。これは言葉で説明するのが難しいかもしれないので、私はgifファイルを追加しました。
この問題を解決する方法はありますか?ここに私の現在のコードです。
private int posX, posY; //Both initialized in Form Load event
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up)
posY -= 3;
else if (e.KeyCode == Keys.Right)
posX += 3;
else if (e.KeyCode == Keys.Down)
posY += 3;
else if (e.KeyCode == Keys.Left)
posX -= 3;
}
//Timer ticks every 0.1 second
private void Timer_Tick(object sender, EventArgs e)
{
Box.Location = new Point(posX, posY);
labelPosX.Text = posX.ToString(); //Testing purposes
labelPosY.Text = posY.ToString(); //Testing purposes
}
私はこれを達成するために、KeyDownイベントを使用するのが大好きだが、実際に本物のゲームの世界で使用される、より良い以上の一般的な方法があれば、私もそれについて知っているのが大好きです!
ありがとうございます! .dllファイルなどをインストールする必要がありますか?私のVisual Studioは 'キーボード 'を認識しません。 「Using System.Windows.Input;」を追加しました。それでもそれは認識できません。=/ –
Hm。 FormsにはKeyboardクラスがないことを忘れていました。あなたに答えを編集させてください。 – rokkerboci
ありがとう、私はキーボードクラスもWPF用だと思っていました。 –