我一直在尝试使用获胜表单创建一个蛇游戏,并且在使用箭头键移动我的按钮工具和事件处理时遇到了麻烦。如果有人可以向我解释如何使它工作,那将非常有帮助
1 回答
从您提供的非常有限的信息来看,通常该方法应该是处理包含您的游戏的 Form 的 KeyDown 事件。当表单具有焦点时,只要按下某个键,就会在按下该键时引发此事件。(KeyPress 事件要求在触发之前按下并释放键;相同的操作也会触发 KeyDown 和 KeyUp 的组合)。
处理 KeyDown 事件时,检查 KeyEventArgs 的 KeyData 属性。该属性(只读)是一个标记的枚举(意味着它可以具有可用值的组合)。您需要查看是否按下了以下一项或多项:Keys.Up、Keys.Down、Keys.Left 和 Keys.Right。这些是箭头键。您还可以允许用户分别使用数字键盘键 8、2、4 和 6,它们具有不同的 Keys 枚举值。如果 KeyData 具有其中之一,则更改蛇的移动方向,并将 KeyEventArgs 的 Handled 属性设置为 true,这将告诉任何其他响应按键的代码不要继续。这将防止与箭头键相关的默认行为引起问题。
了解用户可能会按下多个箭头键。如果这些键的方向相反,或者您不允许向一个方向移动,您将需要决定如何处理这种情况。简单的解决方案是什么都不做。更复杂的解决方案是跟踪当前按下了哪些箭头键,如果按下了多个箭头键,则侦听 KeyUp 事件,该事件将告诉您何时释放了一个或多个,并且仅在当前按下一个键时改变方向。