2012-08-14 5 views
-1

필자는 win 형태로 스네이크 게임을 만들려고했는데 화살표 키를 사용하여 이벤트 처리로 버튼 도구를 움직이는 데 어려움을 겪었습니다. 누군가가 내게 어떻게 작동하는지 설명 할 수 있다면 매우 도움이 될 것입니다.스네이크 게임 승 양식

+6

질문을 편집하여 현재 시도한 코드를 표시하십시오. –

+0

"버튼 도구"란 무엇입니까? –

답변

1

매우 제한된 정보를 통해 일반적으로 게임이 포함 된 양식의 KeyDown 이벤트를 처리하는 방법이 필요합니다. 양식에 포커스가있는 동안 키를 누를 때마다 누를 때마다이 이벤트가 발생합니다. (KeyPress 이벤트는 키를 누르기 전에 키를 눌렀다 놓아야합니다. 동일한 작업을 수행하면 KeyDown과 KeyUp도 함께 발생합니다).

KeyDown 이벤트를 처리 할 때 KeyEventArgs의 KeyData 속성을 검사하십시오. 이 속성 (읽기 전용)은 플래그가 지정된 열거 형입니다. 즉 사용 가능한 값의 조합을 가질 수 있습니다. Keys.Up, Keys.Down, Keys.Left 및 Keys.Right 중 하나 이상이 눌러져 있는지 확인해야합니다. 화살표 키입니다. 사용자가 다른 키 열거 형 값을 가진 숫자 키 8, 2, 4 및 6을 각각 사용하도록 허용 할 수도 있습니다. KeyData에이 중 하나가 있으면 Snake가 이동하는 방향을 변경하고 KeyEventArgs의 Handled 속성을 true로 설정합니다. 그러면 키 프레스에 응답하는 다른 코드가 진행되지 않습니다. 이렇게하면 화살표 키와 관련된 기본 동작이 문제를 일으키는 것을 방지 할 수 있습니다.

사용자가 여러 개의 화살표 키를 누를 수 있음을 이해하십시오. 해당 키가 반대 방향이거나 한 방향으로 이동하지 못하는 경우이 상황을 처리하는 방법을 결정해야합니다. 간단한 해결책은 아무 것도하지 않는 것입니다. 더 복잡한 솔루션은 현재 눌려져있는 화살표 키를 추적하고, 여러 화살표 키가 눌려진 경우 하나 이상의 키가 해제되었을 때 알려주는 KeyUp 이벤트를 수신하고 한 키가 눌러 진 경우에만 방향을 변경하는 것입니다.

+0

내 정보가 부족해서 죄송합니다. 이곳에서 꽤 새로운 것이지만, 귀하의 도움에 감사 드리며 그것을 조사하고 프로젝트 처리 방법을 알아 내려고 노력합니다. – david1597

관련 문제