}
function snake_reload()
{
for (var i = 0 ; i<this.items.length ; i ++)
{
var curnode = this.items[i];
obj = document.all("main" + curnode.x + "#" + curnode.y);
obj.style.background = color[1];
}
}
function snake_destroy()
{
for (var i = 0 ; i<this.items.length ; i ++)
{
var curnode = this.items[i];
obj = document.all("main" + curnode.x + "#" + curnode.y);
obj.style.background = color[0];
}
}
function snake_clear()
{
this.destroy();
this.items = new array();
}
snake.prototype.eat = snake_eat;
snake.prototype.move = snake_move;
snake.prototype.reload = snake_reload;
snake.prototype.destroy = snake_destroy;
snake.prototype.clear = snake_clear;
//蛇体节点
function snakenode(x,y)
{
this.id = 0;//编号
this.x = x;//坐标x
this.y = y;//坐标y
this.color = "#000000";
}
function snakenode_setc(d_color)
{
this.color = d_color;
}
function snakenode_move(dx,dy)
{
this.x = dx;
this.y = dy;
}
snakenode.prototype.setcolor = snakenode_setc ;
snakenode.prototype.move = snakenode_move ;
//========================================
//程序界面
//初始化主控制区
function drawarea(row,col,name){
var s = "<table border=1 cellspacing=0 cellpadding=1 bgcolor=" + color[0] + ">";
for(var i=0; i<row; i++){
s = s + "<tr height=" + size + ">";
for(var j=0; j<col; j++){
var id = name + i + "#" + j;
s = s + "<td width=" + size + " class=btnup id=" + id;
s = s + " style=\"background:" + color[0] + "\"> </td>"
}
s = s + "</tr>";
}
s = s + "</table>";
return s;
}
//初始化
function init(){
mainarea.innerhtml = drawarea(row,col,'main');
}
//==================================
//程序控制区,用来接收输入、定义控制方法
//控制输入
function keydown(){
switch(event.keycode)
{
case 37:
if (curr_direction[0] != -1)
{
move_direction[0] = -1;
move_direction[1] = 0;
}
break;
case 38:
if (curr_direction[1] != -1)
{
move_direction[0] = 0;
move_direction[1] = -1;
}
break;
case 39:
if (curr_direction[0] != 1)
{
move_direction[0] = 1;
move_direction[1] = 0;
}
break;
case 40:
if (curr_direction[1] != 1)
{
move_direction[0] = 0;
move_direction[1] = 1;
}
break;
}
}
function begin()
{
end = false;
paused = false;
s.clear();
for (var i = 8; i >=0 ; i--)
{
sn = new snakenode(0,i);
s.eat(sn);
}
n.eated();
n.create();
move_direction[0] = 1;
move_direction[1] = 0;
curr_direction[1] = s.items[1].x - s.items[0].x;
curr_direction[0] = s.items[1].y - s.items[0].y;
start();
}
//启动开关
function start()
{
if (end)
{
s.reload();
alert("挂了!");
return;
}
window.clearinterval(timerid);
timerid = window.setinterval("run()",delay);
}
//运行主体
var d = true;
function run(){
if(paused) return;
if(true){
window.clearinterval(timerid);
s.move(move_direction);
curr_direction[1] = s.items[1].x - s.items[0].x;
curr_direction[0] = s.items[1].y - s.items[0].y;
start();
}
}
//暂停开关
function pause()
{
if (paused)
{
paused = false;
if (!end)
{
run();
}
}
else
{
paused = true;
}
}
//结束
function over()
{
end = true;
}