Javascipt を使用して HTML5 スネーク ゲームを構築しようとしていました。解決すべき大きな問題が 1 つ残っており、何時間も考えても解決できません。
これは、矢印キーを押したときの setInterval と蛇の動きに関係しています。矢印キーをすばやく押すと、複数のキーを押すのとほぼ同じようにゲームが終了します (ヘビが自分自身の上を走ると終了することを意味します)。
問題が説明された作業モデル: http://jsfiddle.net/MgsZp/29/
状況: スネークが下に移動しているときに、左矢印を押してから上矢印をすばやく押すと、左矢印の時間間隔が即座にクリアされるため、スネークはそれ自体の上を走ります (上にのみ移動します)。代わりに、左に移動してから上に移動する必要があります。
このような状況で押された矢印キーを配列に保存しようとしましたが、処理できませんでした。
例:
var arrowArray = [] ; /* 押された矢印キーを保存します */
// キーを押すと setInterval(move_snake, timer) が arrowArray[0] に保存されている方向に
// arrowArray.shift() は、ヘビが移動する現在の方向を削除し、arrowArray[0] の次の方向に道を譲ります
矢印キーをすばやく押したときに、ヘビが一方向に移動するまで待ってから、2 番目の方向に移動する方法を教えてください。タイマーが終了するのを待つために setTimeout 内で setInterval を使用しようとしましたが、成功しませんでした。
ヘルプ?