完整版(源代码)

完整版(源代码)
javascript蛇完整版的蛇,面向对象
复制代码代码如下所示:
蛇蛇V2.4

体{
字体大小:9pt;
}
表{
边界塌陷:塌陷;
边境:固体# 333 1px;
}
TD {
身高:10px;
宽度:10px;
字体大小:0px;
}
填充{。
背景颜色:蓝色;
}
函数$(ID){ return document.getelementbyid(ID);}
/ **************************************************************
* Javascript蛇V2.4
* V2.4修正蛇颜色可以移动的蛇。
************************************************************** /
贪婪贪吃蛇
var
Tbl:空,

*身体:蛇,每天放蛇阵,
*数据结构{ x x0,y0,:Y:颜色:color0 },
x,y表示坐标,颜色代表颜色。
**
主体:{ },
目前移动 / /方向、价值,分别,右,左,然后按键盘上的方向键可以改变它
方向:0,
定时器
定时器:null,
速度
速度:250,
如果已暂停
停顿:真的,
行数
行数:30,
列的数目
ColCount:30,
初始化
init:函数(){
VaR的颜色= {','orange','',绿色的,蓝色的,'purple ',' # CCC};
this.tbl = $(主要);
变量x=0;
var=0;
VaR ColorIndex = 0;
具有初始移动方向
this.direction = math.floor(Math.random)*(4);
表结构
对于(VAR行= 0;行< this.rowcount;行+ +){
VaR TR = this.tbl.insertrow(- 1);
对于(VAR col = 0;Col < this.colcount;胶原+ +){
VaR技术tr.insertcell(- 1);
}
}
有 20个松散节点
对于(var i = 0;i < 10;i + +){
x = math.floor(Math.random()*。ColCount、);
Y = math.floor(Math.random()*本。行数);
色指数= math.floor(Math.random)*(7);
如果(!this.iscellfilled(x,y)){
这个任务。行{ Y }。细胞{X}。style.backgroundcolor =颜色{ ColorIndex };
}
}
有/。
当(真){
x = math.floor(Math.random()*。ColCount、);
Y = math.floor(Math.random()*本。行数);
如果(!this.iscellfilled(x,y)){
这个任务。行{ Y }。细胞{X}。style.backgroundcolor =黑;
This.body.push({ x:x,Y:Y,颜色:' });
打破;
}
}
This.paused = true;
添加键盘事件
文档功能(e){
如果(!E)E = window.event;
开关(能哪e.charcode | |){
案例13:{
如果(蛇暂停){
Snake.move();
snake.paused = false;
}
别的{
如果没有停顿,停止移动
Snake.pause();
snake.paused =真;
}
打破;
}
案例37:左/左
停下来/蛇向后
如果(蛇=方向= 1){
打破;
}
snake.direction = 3;
打破;
}
案例38
快捷键在这里工作
如果(事件。ctrlkey){
Snake.speedUp(20);
打破;
}
如果(蛇=方向= 2){ /阻止蛇向后
打破;
}
snake.direction = 0;
打破;
}
案例39:{ /右/右
如果(蛇=方向= 3){ /阻止蛇向后
打破;
}
snake.direction = 1;
打破;
}
案例40:
如果(事件。ctrlkey){
(20)snake.speedup;
打破;
}
如果(蛇=方向= 0){ /阻止蛇向后
打破;
}
snake.direction = 2;
打破;
}
}
}
},
莫比尔
移动:函数(){
this.timer = setInterval(){()函数(
Snake.erase();
Snake.moveOneStep();
Snake.paint();
},这个,速度);
},
身体的一部分莫比尔
moveonestep:函数(){
如果(this.checknextstep()= = 1){
ClearInterval(这个定时器);
警报(游戏结束)! / npress重启继续。);
返回;
}
如果(this.checknextstep()= = 1){
无功_point = this.getnextpos();
无功_x = _point X;
无功_y = _point。Y;
无功_color = this.getcolor(_x,_y);
This.body.unshift({ x:_x,Y:_y,颜色:_color });
/因为吃了一种食物,所以产生了一种食物。
This.generateDood();
返回;
}
/ / window.status = this.tostring();
VaR点= this.getnextpos();
颜色保留的第一部分
这个颜色{ 0 } }颜色;
颜色/移动
对于(var i = 0;i < this.body.length-1;i++){
这个物体{ { } }。这个= { + 1 }。颜色;
}
一天减去一天,加上尾部,显示前进蛇的效果。
This.body.pop();
This.body.unshift({ x点。X,Y点。Y,颜色:颜色});
/ / window.status = this.tostring();
},
下一步将是探索/去什么地方。
暂停:函数(){
ClearInterval(蛇。定时器);
This.paint();
},
GetNextPos:函数(){
x =。主体{ 0 } x;
var =这个。{ { 0 };
这个颜色{ 0 } }颜色;

如果(这个方向= 0){
Y—;
}
对/对
否则如果(这个方向= 1){
++;
}

否则如果(这个方向= 2){
++;
}
左/左
别的{
X;
}
返回一个坐标
返回:x,y,y,y;
},
什么是检查将移动到下一步
checknextstep:函数(){
VaR点= this.getnextpos();
x;
y =点,y;
如果(X =这。| | ColCount、y =这。行数){
返回- 1;联系人边界,游戏结束
}
对于(var i = 0;i < this.body.length;i++){
如果(这个身体{我},x = =这。体{我},y = = y){
返回- 1;触摸你的身体,游戏结束。
}
}
如果(this.iscellfilled(x,y)){
返回1;
}
返回0;空格
},
擦除蛇
擦除:函数(){
对于(var i = 0;i < this.body.length;i++){
This.eraseDot(这个身体{我},X,这个身体{我},Y);
}
},
绘制/蛇
画图:函数(){
对于(var i = 0;i < this.body.length;i++){
This.paintDot(这个身体{我},X,这个身体{我},Y,这个身体{我}。颜色);
}
},
删除部分
EraseDot:函数(x,y){
这个任务。行{ Y }。细胞{X}。style.backgroundcolor = ;
},
paintdot:函数(x,y,颜色){
这个任务。行{ Y }。细胞{X} style.backgroundcolor =色;
},
获取颜色坐标
色鬼:函数(x,y){
退货。TBL。行{ Y }。细胞{X}。style.backgroundcolor;
},
用于调试
说明:函数(){
var;
对于(var i = 0;i < this.body.length;i++){
+ + +这个身体{ + y + + + +这个。身体{ } + + +颜色:+这个;
}
返回字符;
},
检查一个点的坐标没有被填充。
IsCellFilled:函数(x,y){
如果(这个任务。行{ Y }。细胞{X}。style.backgroundcolor = ={)
返回false;
}
返回true;
},
启动
重新启动:函数(){
如果(这个计时器){
ClearInterval(这个定时器);
}
对于(var i = 0;i < this.rowcount;i++){
(0)this.tbl.deleterow;
}
this.body = { };
This.init();
this.speed = 250;
},
加速度
加速:函数(时间){
如果(!这(暂停){
如果(这个速度+ time2000){
返回;
}
this.speed + =时间;
This.pause();
This.move();
}
},
食物。
GenerateDood:函数(){
VaR的颜色= {','orange','',绿色的,蓝色的,'purple ',' # CCC};
var x = math.floor(Math.random()*。ColCount、);
var y = math.floor(Math.random()*本。行数);
VaR ColorIndex = math.floor(Math.random)*(7);
如果(!this.iscellfilled(x,y)){
这个任务。行{ Y }。细胞{X}。style.backgroundcolor =颜色{ ColorIndex };
}
}
};
/ *************************************************************
* Javascript蛇V2.4
************************************************************** /

点击左键或开始/暂停游戏进入

左键或按Ctrl =加速
左键或按Ctrl +向下箭头向下

$('btn)。Onclick =函数(){()
如果(蛇暂停){
Snake.move();
snake.paused = false;
}
别的{
Snake.pause();
snake.paused =真;
}
};
$(复位)。Onclick =函数(){()
Snake.restart();
This.blur();
};
$(、)。Onclick =函数(){()
Snake.speedUp(20);
};
$(downspeed)。Onclick =函数(){()
(20)snake.speedup;
};
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部