Visual Studio Windows Form 응용 프로그램을 사용하여 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;"을 추가했습니다. 하지만 여전히 그것을 인식하지 못합니다. =/ –
흠. Forms에는 Keyboard 클래스가 없다는 것을 잊어 버렸습니다. 내가 너에게 대답을 편집하게 해줘. – rokkerboci
감사합니다. Keyboard 클래스도 WPF 용이라고 생각했습니다. –