javascript实现一个简单的贪吃蛇游戏
贪吃蛇
var映射;
毒蛇;蛇
无价值食品;
var定时器
无功initspeed = 200; / /初始时间间隔(毫秒),间接代表蛇的移动速度
无功nowspeed = initspeed; / /当游戏贪吃蛇的移动速度
var等级=0;
var标志= 1;(间接作为水平)
映射
函数映射(){
这个宽度= 800;
这个高度= 400;
这个位置=绝对的;
这颜色=# eeeeee;
这_map = null;
映射
这个=函数(){
这个_map = document.createelement('div);
这个_map。风格。宽度=这宽度+ 'px;
这个_map。风格。高度=这高度+ 'px;
这个_map位置= this.position。风格;
这个_map。风格。背景颜色= this.color;
document.getelementsbytagname('body){ 0 }。appendChild(这个。_map);
}
}
食物
功能食品(){
这个宽度= 20;
这个高度= 20;
这个位置=绝对的;
这颜色=# 00ff00;
这个,x=0;
这个,y=0;
这_food;
生成食物
这个=函数(){
这个_food = document.createelement('div);
这个_food。风格。宽度=这宽度+ 'px;
这个_food。风格。高度=这高度+ 'px;
这个_food位置= this.position。风格;
这个_food。风格。背景颜色= this.color;
这个X = math.floor(Math.random()*地图。宽/本。宽度);
这math.floor。Y =(Math.random()*地图。身高 /本。宽度);
这个_food。风格。左= X * this.width本;
这个_food。风格。=这this.height Y *;
地图。_map.appendchild(这个。_food);
}
}
蛇
函数蛇(){
这个宽度= 20;
这个高度= 20;
这个位置=绝对的;
这个,直接= NULL;移动方向。
初始蛇
这个主体=新数组(
{ 3,2,',零}, / /头
{零} 2,2,'蓝色',
{零} 1,2,'蓝色',
);
蛇/代
这个=函数(){
对于(var i = 0;i < this.body.length;i++){
如果(这个主体{ { 3 } = NULL){
这个身体{我} { 3 } = document.createelement('div);
这个身体{我} { 3 }。风格。宽度= this.width;
这个身体{我} { 3 }。风格。高度= this.height;
这个身体{我} { 3 }。位置= this.position风格;
这个身体{我} { 3 }。风格。背景颜色=本。体{我} { 2 };
地图。_map.appendchild(这个身体{我} { 3 });
}
这个身体{我} { 3 }。风格。左=本。体{我} { 0 } *宽度+ 'px;
这个身体{我} { 3 }。风格。=这。体{我} { 1 } *高度+ 'px;
}
}
蛇形移动控制
移动=函数(){
VaR的长度= this.body.length-1;
对于(var i =长度;i 0;i){
这个身体{我} { 0 } = { },身体:{ 0 };
这个身体{我} { 1 } = { },身体:{ 1 };
}
开关(这个。直接){
case'right:
这个。{ { 0 } { 0 } }。。{ { 0 } { 0 } } + 1;
打破;
case'left:
这个。{ { 0 } { 0 } }。。{ { 0 } { 0 } - 1;
打破;
case'up:
这个。{ { 0 } { 1 } }。。{ { 0 } { 1 } - 1;
打破;
case'down:
这个。{ { 0 } { 1 } }。。{ { 0 } { 1 } } + 1;
打破;
}
this.condition();
This.show();
}
计时器,在游戏开始时,调用
这个速度=函数(){
定时器= setInterval('()',snake.move initspeed);
}
条件
这个条件=函数(){
/吃食物
如果(这个身体{ 0 } { 0 } = =食物。这体{ 0 } { 1 } = =食物。Y){
年级+;
这个体{ { } }。身体长度= {零} 0,0,'蓝色';
地图。_map.removechild(食品。_food)
food.show();
}
以确定是否墙壁 /。
如果(这个身体{ 0 } { 0 } =地图。宽/本。宽度| |本。体{ 0 } { 1 } =地图。身高 /本。高度){
警报(游戏结束);
ClearInterval(定时器);
返回;
}
确定是否命中其
对于(var i = 1;i < this.body.length;i++){
如果(这个{ { 0 } { 0 } =这个。{ { 0 } }这个。正文{ 0 } { 1 } } =这个。主体{ 1 }){){
警报(游戏结束);
ClearInterval(定时器);
返回;
}
}
速度,积分各有2分,速度加倍。
如果(等级 2 =标志){
ClearInterval(定时器);
旗帜+;
nowspeed = initspeed /标志;
定时器= setInterval('()',snake.move nowspeed);
}
文件标题= 'snake积分+年级+速度级+ initspeed / nowspeed;
}
}
文档化函数(事件){
按任意键开始游戏。
如果(蛇=直接= NULL){
蛇直接=左;
Snake.speed();
}
控制方向,右边是一个站。
开关(窗口。eventwindow。事件。关键词:事件。键码){ / /浏览器兼容
案例87:
蛇。直接=蛇。体{ 0 } { 0 } = =蛇。体{ 1 } { 0 }蛇。直接向上'; / /避免反向移动,引发死亡的bug
打破;
案例83:
蛇。直接=蛇。体{ 0 } { 0 } = =蛇。体{ 1 } { 0 }蛇直接:Down;
打破;
案例68:
蛇。直接=蛇。体{ 0 } { 1 } = =蛇。体{ 1 } { 1 }蛇。直接:左;
打破;
案例65:
蛇。直接=蛇。体{ 0 } { 1 } = =蛇。体{ 1 } { 1 }蛇。直接:右;
打破;
}
}
自动加载/游戏
窗口。指针函数(){
映射=新映射();
Map.show();
食物=新食物();
food.show();
蛇=新蛇();
Snake.show();
}
以上是本文的全部内容,希望大家能喜欢。