|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> new document </title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="generator" content="editplus" /> <meta name="author" content="" /> <meta name="keywords" content="" /> <meta name="description" content="" /> <script type="text/javascript"> <!--Game = {BlockWidth : 20,GameState :"pause",Map : {init : function(left,top,width,height,foodNum){this.food = [];this.foodNum = foodNum;this.left = left;this.top = top;this.width = width;this.height = height;this.instance = document.createElement("div");this.instance.setAttribute("id","map");this.instance.style.offsetLeft = left;this.instance.style.offsetTop = top;//this.instance.style.offsetWidth = width;//this.instance.style.offsetHeight = height;this.instance.style.width = width;this.instance.style.height = height;this.instance.style.backgroundColor = "gray";document.getElementById("adiv").appendChild(this.instance);},createOrRefreshFood: function(){var foodPosLeft,foodPosTop;for(var i=0;i<this.foodNum;i++){if(!this.food[i]){this.food[i] = Game.Food.create(Game.BlockWidth,Game.BlockWidth,"red");this.instance.appendChild(this.food[i]);}foodPosLeft = 0.5*(0.75+Math.random())*this.width + this.left;foodPosTop = 0.5*(0.75+Math.random())*this.height + this.top;this.food[i].style.left = foodPosLeft;this.food[i].style.top = foodPosTop;}}},Food : {create : function(width,height,color){this.width = width;this.height = height;this.color = color;this.instance = document.createElement("div");this.instance.style.position = "absolute";this.instance.style.zIndex = "9";this.instance.style.width = width;this.instance.style.height = height;this.instance.style.backgroundColor = color;return this.instance;}},Snack : {init: function(foodNum){this.foodNum = foodNum;this.foodNumOfEat = 0;this.instance = [];this.derect = -1; // -1 = left,1=right,-2=up,2=downthis.instance[0] = document.createElement("div");this.instance[0].style.position = "absolute";this.instance[0].style.backgroundColor = "black";this.instance[0].style.zIndex = "9";this.instance[0].style.width = Game.BlockWidth;this.instance[0].style.height = Game.BlockWidth;this.instance[0].style.left = 200;this.instance[0].style.top = 200;this.tail = null;this.instance[0].style.border = "2px solid white";Game.Map.instance.appendChild(this.instance[0]);for(var i=1;i<foodNum;i++){this.instance[i] = this.instance[0].cloneNode(true);this.instance[i].style.width = Game.BlockWidth;this.instance[i].style.height = Game.BlockWidth;this.instance[i].style.left = (parseInt(this.instance[i-1].style.left)+ Game.BlockWidth);this.instance[i].style.top = 200;this.instance[i].style.backgroundColor = "black";this.instance[i].style.border = "2px solid white";//this.instance[i].style.borderColor = "red";Game.Map.instance.appendChild(this.instance[i]);}},move:function(derect){if(derect + this.derect!=0){this.derect = derect;}var head = {};head.left = parseInt(this.instance[0].style.left);head.top = parseInt(this.instance[0].style.top);switch (this.derect){case -1:{ this.instance[0].style.left = parseInt(this.instance[0].style.left)-Game.BlockWidth;break;}case 1:{this.instance[0].style.left = parseInt(this.instance[0].style.left)+Game.BlockWidth;break;}case -2:{this.instance[0].style.top = parseInt(this.instance[0].style.top)-Game.BlockWidth;break;}case 2:{this.instance[0].style.top = parseInt(this.instance[0].style.top)+Game.BlockWidth;break;}}if(this.tail!=null){this.foodNum++;}if(this.foodNum>1){for(var i=this.foodNum-1;i>1;i--){this.instance[i].style.left = this.instance[i-1].style.left;this.instance[i].style.top = this.instance[i-1].style.top;}if(this.tail!=null){Game.Map.instance.appendChild(this.tail);this.tail = null;}this.instance[1].style.left = head.left;this.instance[1].style.top = head.top;}if(this.isFull()){clearInterval(Game.timing);alert("you win!");}else if(this.isDead()){clearInterval(Game.timing);window.onkeydown = null;alert("you fail");}else{this.eat();}},eat : function(){var map = Game.Map;var head = this.instance[0];for(var i=0;i<map.food.length;i++){if(Math.abs(parseInt(this.instance[0].style.left)-parseInt(map.food[i].style.left))<=15 && Math.abs(parseInt(this.instance[0].style.top)-parseInt(map.food[i].style.top))<=15) {//alert("eat!");this.tail = this.instance[this.instance.length] = this.instance[0].cloneNode(true);var foodEated = map.food[i];for(var j=i+1;j<map.food.length;j++){map.food[j-1] = map.food[j];}map.food.length--;foodEated.parentNode.removeChild(foodEated);this.foodNumOfEat++;break;}}if(map.food.length<=0){map.createOrRefreshFood(map.foodNum);}},isFull : function(){//alert(this.foodNumOfEat);return this.foodNumOfEat >= 15;},isDead : function(){var map = Game.Map;if(parseInt(this.instance[0].style.left) <= map.left || parseInt(this.instance[0].style.left) >= (map.left+map.width)|| parseInt(this.instance[0].style.top) <= map.top || parseInt(this.instance[0].style.top) >= (map.top + map.height) ) {return true;}for(var i=1;i<this.foodNum;i++){if(this.instance[0].style.left == this.instance[i].style.left && this.instance[0].style.top == this.instance[i].style.top){return true;}}}},GameStart :function(){this.Map.init(0,0,1000,600,1);this.Map.createOrRefreshFood();this.Snack.init(6);var gameItsSelf = this;//if(!window.onkeydown){//window.onkeydown = document.body.onkeydown;//}//alert(document.body.onkeydown);window.onkeydown = document.body.onkeydown = function(event){event = window.event||event;var keyCode = event.keyCode;//alert(keyCode);if(keyCode==32){if(Game.GameState=="pause"){Game.GameState = "alive";window.clearInterval(Game.timing);Game.timing = window.setInterval(bindParamsToFun(Game.Snack,Game.Snack.move,Game.Snack.derect),100);}else{Game.GameState = "pause";window.clearInterval(Game.timing);}}else if(Game.GameState =="alive"){var tempDirect = Game.rederect;switch (keyCode) {case 37:{tempDirect = -1;window.clearInterval(Game.timing);Game.timing = window.setInterval(bindParamsToFun(Game.Snack,Game.Snack.move,tempDirect),100)break;}case 38:{tempDirect = -2;window.clearInterval(Game.timing);Game.timing = window.setInterval(bindParamsToFun(Game.Snack,Game.Snack.move,tempDirect),100)break;}case 39:{tempDirect = 1;window.clearInterval(Game.timing);Game.timing = window.setInterval(bindParamsToFun(Game.Snack,Game.Snack.move,tempDirect),100)break;}case 40: {tempDirect = 2;window.clearInterval(Game.timing);Game.timing = window.setInterval(bindParamsToFun(Game.Snack,Game.Snack.move,tempDirect),100)break;}default :break;}}}}}function bindParamsToFun(obj,fun){ var args = Array.prototype.slice.call(arguments).slice(2); return function(){ fun.apply(obj,args); }; }window.onload = function(){Game.GameStart();}//window.onload = function(){//alert(document.getElementById("theBody"));//} //--> </script> </head> <body id="theBody"><div id="adiv" width="1000" height="1000"></div> </body></html> |
|