渲染蛇的邏輯,此時的邏輯是snake類調game類的setcolor方法,因為本質其實就是table**渲染顏色,table**在game類初始建立的,所以理應讓game設定渲染顏色的方法
蛇的運動其實就是蛇在進行body陣列的更新,比如我們向右運動,本質就是body陣列中,尾部刪除,頭部增加。所以蛇會渲染新的狀態
此時蛇會邊長而不是運動,這樣是因為我們只是告訴了蛇如果渲染顏色, 之前渲染過的,需要擦除一下
此時我們給game設定乙個擦除螢幕的方法
接下來我們要在定時器中進行遊戲的三步走:清屏,更新和渲染
接下來蛇要在不同的方向進行運動,此時我們可以給game設定乙個bindevent事件,進行鍵盤的事件監聽,改變運動方向
此時snake類也必須有對應的方向匹配,我們在snake的初始化的時候設定了乙個this.direction = 「r」
運動優化:
此時我們發現蛇是可以原地調頭的,不符合遊戲的規則,所以我們需要優化
第一步在按鍵盤的時候需要先判定一下當前的蛇的運動方向,比如我們的蛇是朝右運動的,此時就不能按左
第二步講蛇的改變封裝了乙個方法,防止在每一幀中進行的方向衝突,比如我們的蛇雖然不能原地調頭了,但是我們的渲染是在500ms後執行的,中間有500ms的空隙可以進行非常規操作,所以我們設定該方法解決這個問題
此時我們建立乙個food類,用來產生食物
在game進行例項化然後在定時器中進行渲染
但是此時會發現食物會渲染到蛇的身上
所以此時我們在隨機食物的row和col的時候要先判斷一下是否在蛇的身上
function game()
game.prototype.init = function()
//判斷死亡2、自己吃自己
for(var i=1;i}
//吃食物:如果蛇頭和食物重合則吃到食物了
if(this.body[0].row == game.food.row && this.body[0].col == game.food.col)else
//每走一步 未刪
}//snake類呼叫game的setcolor方法
snake.prototype.render = function()
}//問題 如果在定時器每次執行的時間範圍內 向右行走的蛇 先按下鍵盤的下鍵瞬間再按下左 那麼蛇還是會原地掉頭,因為update 1s執行一次(this.direction)改變了量次 執行最後一次所以還是會原地掉頭
// 解決方法 設定乙個this.direction的接收器willdirection
snake.prototype.changedirection = function (d)
function food(gamesnake) while((function ()
return false;
}})())
}food.prototype.render = function ()
C 貪吃蛇設計
class map enum char map row col 地圖 map void drawmap 繪製地圖 bool isvaildpoint int x,int y 1.利用列舉來定義常量,在類外部可以通過作用域解析來獲取列舉常量,便於所有類的交流.2.通過二維陣列儲存地圖,在構造的時候讀取...
js 實現貪吃蛇專案
近來在學習js高階,便學習著做個網頁版貪吃蛇專案。map tools.js function window.tools tools food.js function game.prototype.start function function runsnake if heady 0 heady ma...
js貪吃蛇(建構函式)
給大家分享一下這幾天我研究的乙個貪吃蛇,挺簡單的,但是實現起來其實有點繞的,我給大家附上完整 一起分析學習一下,主要用的是建構函式。思想 1 設計蛇 屬性有寬 高 方向 狀態 有多少節 方法 顯示,跑 2 設計食物 屬性寬 高 3 顯示蛇 根據狀態向地圖裡加元素 4 蛇跑起來 下一節到前一節的位置,...