<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>贪吃蛇 Ver 1.0</title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="Coke.Yang">
<meta name="Keywords" content>
<meta name="Description" content>
<style>
<!--
.map td { width: 8; height: 8 }
body { font-size: 8pt; font-family: Arial }
-->
</style>
<script language="JavaScript">
<!--
function Snake(){
//Property
this.mapMax = 25;
this.body = new Array();
this.arrow;
this.speed = 5;//1-10
this.Length = 1;
this.Mx=0;
this.My=0;
this.active=0;
//Method
this.createMap = function(){
document.write("<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\" style=\"border-collapse: collapse\" bordercolor=\"#8F8F8F\"><tr><td>");
document.write("<table class=\"map\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#EFEFEF\">");
for(y=1;y<=this.mapMax;y++){
document.write("<tr>");
for(x=1;x<=this.mapMax;x++){
document.write("<td id=x"+x+"y"+y+" type=\"Map\"></td>");
}
document.write("</tr>");
}
document.write("</table></td></tr></table>");
}
this.createSnake = function(){
this.body[0] = new Array(this.random(),this.random());
this.set(this.body[0][0],this.body[0][1],"Snake");
}
this.createFood = function(){
var food = new Array(this.random(),this.random());
if(this.getType(food[0],food[1])!="Snake"){
this.set(food[0],food[1],"Food");
}else{
this.createFood();
}
}
this.turn = function(Arrow){
if(this.Length>1){
if(Arrow=="L" & this.Arrow!="R") this.Arrow = Arrow;
if(Arrow=="R" & this.Arrow!="L") this.Arrow = Arrow;
if(Arrow=="U" & this.Arrow!="D") this.Arrow = Arrow;
if(Arrow=="D" & this.Arrow!="U") this.Arrow = Arrow;
}else{
this.Arrow = Arrow;
}
switch(this.Arrow){
case "L":this.Mx=-1;this.My=0;break//左
case "R":this.Mx= 1;this.My=0;break//右
case "U":this.Mx=0;this.My=-1;break//上
case "D":this.Mx=0;this.My= 1;break//下
}
this.active=1;
}
this.move = function(){
if(this.active)
{
var x = this.body[0][0]+this.Mx;
var y = this.body[0][1]+this.My;
var moveTo = new Array(x,y);
this.body.unshift(moveTo);
if((this.getType(x,y)=="Snake"&this.Length>1)||this.getType(x,y)=="Null"){
this.die();
}
if(this.getType(x,y)=="Food"){
this.set(moveTo[0],moveTo[1],"Snake");
this.eat();
}
if(this.getType(x,y)=="Map"){
var temp = new Array();
temp = this.body.pop();
this.set(moveTo[0],moveTo[1],"Snake");
this.set(temp[0],temp[1],"Map");
}
var point = "x"+this.body[0][0]+"y"+this.body[0][1];
}
//-----------Debug----------------
var str="";
str="Length: "+this.Length+" Speed: "+this.speed;
document.all.ospan.innerText =str;
//-----------Debug----------------
}
this.eat = function(){
this.Length++;
this.createFood();
}
this.die = function(){
if(this.active){
window.alert("Sorry!你挂了!再来一次");
this.active = 0;
window.location.reload();
}
//this.reset();
}
this.getType = function(x,y){
var point = "x"+x+"y"+y;
if(x<1||x>this.mapMax||y<1||y>this.mapMax) return "Null";
return document.getElementById(point).type;
}
this.set = function(x,y,type){
var point = "x"+x+"y"+y;
if(type == "Snake"){
document.getElementById(point).bgColor="#787878";
}
if(type == "Map"){
document.getElementById(point).bgColor="";
}
if(type == "Food"){
document.getElementById(point).bgColor="#FF0000";
}
document.getElementById(point).type=type;
}
this.reset = function(){
//this.run();
}
this.random = function(){
return parseInt(Math.random()*this.mapMax)+1;
}
this.getSpeed = function(){
var x= parseInt(4-(this.speed/3))*100;
return x;
}
this.run = function(){
this.createMap();
this.createSnake();
this.createFood();
}
}
var iSnake = new Snake();
iSnake.run();
document.onkeydown=KeyDown;
window.setInterval("iSnake.move();",iSnake.getSpeed());
function KeyDown(){
var Key=window.event.keyCode;
switch(Key){
case 37:iSnake.turn("L");break//左
case 39:iSnake.turn("R");break//右
case 38:iSnake.turn("U");break//上
case 40:iSnake.turn("D");break//下
}
return false
}
//-->
</script>
</head>
<body>
<FONT COLOR="#FF0000">·</FONT><span id="ospan"></span>
<font size="6" face="Arial Black">·</font> 蛇
<font size="6" face="Arial Black" color="#FF0000">·</font>食物
</body>
</html>