<
!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 ...