貪吃蛇 物件導向版

2021-10-02 18:43:21 字數 3489 閱讀 8519

<

!doctype html>

"en"

>

"utf-8"

>

"viewport" content=

"width=device-width, initial-scale=1.0"

>

document<

/title>

* #map

<

/style>

<

/head>

"grade"

>

0<

/h2>

"map"

>

<

/div>

"module"

>

import game from

"./js/game.js";)

; document.

onclick

=function()

}<

/script>

<

/body>

<

/html>

export

default

class

map//獲取到寬高

static

getstyle

(el, attr)

//根據行列的大小重新賦值總寬高

static

setstyle

(el, attr, val)

//設定資料

setdata

(newdata)

//清除資料

cleardata()

//判斷指定位置,是否包含資料

include()

//通過資料渲染頁面

render()

px; top:

$px;

width:

$px; height:

$px; background:

$;">`

}).join(""

);}}

export

default

class

food

//建立食物

create()

;}}

export

default

class

snake,,

,];this

.direction =

"right"

;//預設的方向

this

.lastdata =;}

//移動

move()

//讓後邊每一格走到前一格的位置上

for(i; i >

0; i--

)//根據方向,移動蛇頭

switch

(this

.direction)

}//安全判斷

changedir

(dir)

}//當方向是上或者下時if(

this

.direction ===

"top"

||this

.direction ===

"bottom")}

//經過安全判斷後,把新方向賦值給當前方向

this

.direction = dir;

return

true;}

//吃到食物後,蛇應該變大一格

eatfood()

}

export

default

class

event;on

(eventname, fn)if(

!this

.events[eventname]

.includes

(fn))}

off(eventname, fn)

this

.events[eventname]

=this

.events[eventname]

.filter

(item => item != fn);}

dispatch

(eventname,

...arg)

this

.events[eventname]

.foreach

(item =>);

}}

import map from

"./map.js"

;import event from

"./event.js"

;import snake from

"./snake.js"

;import food from

"./food.js"

;export

default

class

game

extends

event

//將食物渲染到地圖中

createfood()

this

.map.

setdata

(this

.food.data);}

//開始遊戲

start()

//暫停遊戲

stop()

//給地圖渲染資料

render()

//控制移動

move()

}if(this

.isover()

)this

.render()

;},this

.interval);}

//判斷是否吃到食物

iseat()

//改變分數

changegrade

(grade)

//判斷是否結束

isover()

for(

let i =

1; i <

this

.snake.data.length; i++)}

return

false;}

//遊戲結束

/* overstate 0 中間停止,玩掛了

1 勝利了,遊戲結束

*/over

(overstate =0)

else

this

.stop()

;}//鍵盤按下————通過鍵盤編碼來改變方向

keydown()

}//控制器

control()

//給window新增事件監聽,按下後呼叫keydown()

window.

addeventlistener

("keydown"

,this

.keydown);}

addcontrol

(fn)

}

js物件導向案例 貪吃蛇

食物物件 1 function 沒有則使用預設值 5this.width obj.width 20 6this.height obj.height 20 7this.top obj.top 0 8this.left obj.left 0 9this.backgroundcolor obj.backg...

VC版貪吃蛇

此處,我感受到復用性的好處,將與顯示或平台無關的東西分裝在一起,如果能進一步抽象的盡量抽象,就可以充分發揮其復用性。具體的關於snake的設計,請參見我的部落格 c 版貪吃蛇遊戲 下面是vc下的遊戲介面截圖 在這裡說一下vc下與c 不同的及新家的東西。cpp view plain copy 引入庫 ...

pygame Python 版貪吃蛇

貪吃蛇是個非常簡單的遊戲,適合練手。先來看一下我的遊戲截圖 玩法介紹 回車鍵 開始遊戲 空格鍵 暫停 繼續 方向鍵 或 wsad 鍵 控制移動方向。食物分紅 綠 藍三種,分別對應 10 分 20 分 30 分,每吃乙個食物增加對應分值,每增加 100 分速度加快一級,沒有設定關卡,我玩到 1100 ...