最近我在學(xué)習(xí)jquery,聽說jquery可以幫助我們開發(fā)出很多有趣的小游戲,比如貪吃蛇。然而,當(dāng)我試圖用jquery做貪吃蛇時,發(fā)現(xiàn)自己根本做不來!
首先,jquery雖然可以進行很多DOM操作,但是對于游戲的邏輯控制,卻沒有太多支持。比如,我需要實現(xiàn)貪吃蛇的身體隨著吃到食物而變長的邏輯,我只能使用傳統(tǒng)的JavaScript來實現(xiàn),而無法使用jquery的快捷寫法。這讓我感覺很不自在。
(function addBody() { var last = snakeArr[snakeArr.length-1]; var body = $('<div>').addClass('body').appendTo($box); body.css({ left: last.position().left, top: last.position().top }); snakeArr.push(body); })();
另外,jquery對于canvas的支持也十分有限,而canvas又是貪吃蛇等游戲中不可或缺的重要組件。我發(fā)現(xiàn)我需要頻繁的使用定時器和canvas來實現(xiàn)游戲的繪制、移動等操作,但是jquery對于canvas的操作實在是太過麻煩了,這讓我的代碼看起來十分冗長。
var timer = null; timer = setInterval(function() { ctx.clearRect(0, 0, canvas.width, canvas.height); drawWall(); drawSnake(); drawFood(); snakeMove(); eatFood(); }, 200);
最后,我還發(fā)現(xiàn)jquery對于鍵盤事件的處理似乎也不是很完善。當(dāng)我需要監(jiān)聽用戶按下方向鍵的時候,我只能使用普通的JavaScript寫法來實現(xiàn),而jquery的事件監(jiān)聽機制在這里并沒有優(yōu)勢。
$(document).keydown(function(e) { var code = e.keyCode; if (code === 37) { dir = 'left'; } else if (code === 38) { dir = 'up'; } else if (code === 39) { dir = 'right'; } else if (code === 40) { dir = 'down'; } });
綜上所述,雖然jquery是一種非常方便的庫,但是對于游戲開發(fā)來說并不是最佳選擇。如果你也像我一樣,試圖用jquery來寫貪吃蛇卻失敗了,不要灰心,換一種方式,用原生JavaScript來寫游戲可能會更容易哦!