我正在尝试使用 Javascipt 构建 HTML5 蛇游戏。我有一个主要问题需要解决,经过数小时的思考后无法解决。
这与 setInterval 和箭头键按下时的蛇运动有关。当快速按下箭头键时..几乎就像按下多个键一样游戏结束(它意味着当蛇跑过自己时结束)
解释该问题的工作模型:http: //jsfiddle.net/MgsZp/29/
情况:蛇正在向下移动,当我快速按下左键然后向上箭头时,蛇会越过自身(仅向上移动),因为左箭头的时间间隔立即被清除。相反,它应该向左然后向上移动。
我试图将在这种情况下按下的箭头键存储在 Array 中,但无法处理。
例子:
var 箭头数组 = [] ; /* 存储按下的箭头键 */
// 按键 setInterval(move_snake, timer) 的方向存储在 arrowArray[0]
// arrowArray.shift() 移除蛇移动的当前方向并让位于arrowArray[0]中的下一个方向
现在,当快速按下箭头键时,我如何等到蛇向一个方向移动,然后再向第二个方向移动。尝试在 setTimeout 中使用 setInterval 等待计时器结束,但没有成功。
帮助?