當(dāng)前位置:博客首頁(yè)>>javacript >> 閱讀正文

js版貪吃蛇

作者: 鄭曉 分類: javacript 發(fā)布于: 2016-10-27 19:00 瀏覽:6,637 評(píng)論(10)


參考網(wǎng)上某代碼寫的js版貪吃蛇,貪吃蛇整個(gè)過(guò)程分為三部分,地圖的生成、食物的隨機(jī)顯示,蛇的顯示和移動(dòng)。運(yùn)行時(shí)按鍵盤上下左右進(jìn)行方向控制,蛇頭撞到邊界或自己時(shí)游戲結(jié)束。目前已知的問(wèn)題為:生成食物時(shí)未排除生成到蛇身上的可能。


(function() {
var t = null;
var map = null;
var food={x:0,y:0,div:null};
var snake={
//初始化時(shí)的蛇身部分
snakeBody : [[1,2,null], [2,2,null], [3,2,null], [4,2,null]],
direct : "right"
};
var config = {
width:200,
height:200,
px:10, //單位塊大小
mapColor:"#dddddd",
foodColor:"#555555",
snakeColor:"#666666",
position:'absolute',
speed:100
};
var showMap = function() {
var div = document.createElement("div");
div.style.width = config.width + "px";
div.style.height= config.height + "px";
div.style.backgroundColor = config.mapColor;
div.style.position = config.position;
document.getElementsByTagName("body")[0].appendChild(div);
map = div;
};
var showFood = function() {
var x = Math.floor(Math.random()*config.width/config.px);
var y = Math.floor(Math.random()*config.height/config.px);
food.x = x;
food.y = y;
if(food.div == null) {
var div = document.createElement("div");
div.style.width = config.px + "px";
div.style.height= config.px + "px";
div.style.backgroundColor = config.foodColor;
div.style.position = config.position;
div.style.left = x * config.px + "px";
div.style.top = y * config.px + "px";
map.appendChild(div);
food.div = div;
} else {
food.div.style.left = x * config.px + "px";
food.div.style.top = y * config.px + "px";
}
};
var showSnake = function() {
for(var i=0;i=config.width/config.px || snake.snakeBody[snakeLength-1][0]<0 || snake.snakeBody[snakeLength-1][1]>=config.height/config.px || snake.snakeBody[snakeLength-1][1] <0) { alert("game over"); clearInterval(t); return; } showSnake(); }; var startGame = function() { showMap(); showFood(); showSnake(); t = setInterval(function(){moveSnake()}, config.speed); window.onkeydown = function() { if(37 == event.keyCode) { snake.direct = "left"; } else if(38 == event.keyCode) { snake.direct = "up"; } else if(39 == event.keyCode) { snake.direct = "right"; } else if(40 == event.keyCode) { snake.direct = "down"; } } }; startGame()})()

運(yùn)行截圖:
javascript-snake

? ? ? ?

本文采用知識(shí)共享署名-非商業(yè)性使用 3.0 中國(guó)大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時(shí)請(qǐng)注明出處及相應(yīng)鏈接。

本文永久鏈接: http://yjfs.org.cn/js-snake.html

js版貪吃蛇:目前有10 條留言

用戶評(píng)論頭像 嚼蠟發(fā)表于 2017年11月09日 20:51[回復(fù)]

有點(diǎn)意思,我剛好路過(guò)

用戶評(píng)論頭像 zhaib發(fā)表于 2017年11月06日 16:02[回復(fù)]

挺好的

用戶評(píng)論頭像 有見(jiàn)識(shí)的麻花發(fā)表于 2017年05月10日 22:40[回復(fù)]

厲害了!

用戶評(píng)論頭像 嚴(yán)謹(jǐn)?shù)膸浉?/strong>:發(fā)表于 2016年12月17日 15:32
用戶評(píng)論頭像 三五營(yíng)銷發(fā)表于 2016年12月15日 15:42[回復(fù)]

挺好的,祝你快樂(lè)

用戶評(píng)論頭像 fanniebaby發(fā)表于 2016年11月09日 22:41[回復(fù)]

這個(gè)不錯(cuò)。

用戶評(píng)論頭像 華夏九州套圖發(fā)表于 2016年11月03日 14:51[回復(fù)]

我只是來(lái)隨便看看!

    用戶評(píng)論頭像 殷勤的鍋餅發(fā)表于 2016年11月12日 11:00[回復(fù)]

    第三方

用戶評(píng)論頭像 一生一世套圖發(fā)表于 2016年11月02日 10:31[回復(fù)]

三天不來(lái)手癢癢!

用戶評(píng)論頭像 增達(dá)任務(wù)網(wǎng)發(fā)表于 2016年10月28日 14:03[回復(fù)]

相當(dāng)不錯(cuò),自愧不如!

發(fā)表評(píng)論

change vcode