<!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=down
this.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>
分享到:
相关推荐
java 贪吃蛇游戏.zipjava 贪吃蛇游戏.zipjava 贪吃蛇游戏.zipjava 贪吃蛇游戏.zip java 贪吃蛇游戏.zipjava 贪吃蛇游戏.zipjava 贪吃蛇游戏.zipjava 贪吃蛇游戏.zip java 贪吃蛇游戏.zipjava 贪吃蛇游戏.zipjava ...
【贪吃蛇游戏源代码】是一个适合初学者深入理解Java编程的项目,它结合了基本的编程概念和游戏逻辑,让学习者在实践中提升技能。贪吃蛇游戏是一款经典的计算机游戏,玩家通过控制蛇的移动,使其吃到食物,每吃一颗...
最新单片机仿真 8x8点阵做的贪吃蛇游戏最新单片机仿真 8x8点阵做的贪吃蛇游戏最新单片机仿真 8x8点阵做的贪吃蛇游戏最新单片机仿真 8x8点阵做的贪吃蛇游戏最新单片机仿真 8x8点阵做的贪吃蛇游戏最新单片机仿真 8x8...
贪吃蛇游戏是一款经典的计算机游戏,它源自早期的诺基亚手机,并且在全球范围内广受欢迎。这个Java版本的贪吃蛇游戏源码是为那些希望深入理解游戏开发和Java GUI编程,特别是AWT(Abstract Window Toolkit)和Swing...
嵌入式ARM的贪吃蛇游戏课程设计 嵌入式ARM的贪吃蛇游戏课程设计是基于ARM架构的贪吃蛇游戏设计实践项目。该项目的目的是设计和实现一个基于ARM的贪吃蛇游戏机,使用飞利浦公司的LPC2124芯片板作为平台。 该项目的...
根据提供的文件信息,内容涉及到LabVIEW这一图形化编程语言,以及利用该语言开发的贪吃蛇游戏。为了生成相关知识点,我们可以从LabVIEW的基本概念出发,讲述其在游戏开发中的应用,并尝试将文档中的片段整理为有意义...