`
cjx186
  • 浏览: 273151 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

贪吃蛇游戏

阅读更多
<!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 贪吃蛇游戏.zip

    java 贪吃蛇游戏.zipjava 贪吃蛇游戏.zipjava 贪吃蛇游戏.zipjava 贪吃蛇游戏.zip java 贪吃蛇游戏.zipjava 贪吃蛇游戏.zipjava 贪吃蛇游戏.zipjava 贪吃蛇游戏.zip java 贪吃蛇游戏.zipjava 贪吃蛇游戏.zipjava ...

    贪吃蛇游戏源代码

    【贪吃蛇游戏源代码】是一个适合初学者深入理解Java编程的项目,它结合了基本的编程概念和游戏逻辑,让学习者在实践中提升技能。贪吃蛇游戏是一款经典的计算机游戏,玩家通过控制蛇的移动,使其吃到食物,每吃一颗...

    最新单片机仿真 8x8点阵做的贪吃蛇游戏

    最新单片机仿真 8x8点阵做的贪吃蛇游戏最新单片机仿真 8x8点阵做的贪吃蛇游戏最新单片机仿真 8x8点阵做的贪吃蛇游戏最新单片机仿真 8x8点阵做的贪吃蛇游戏最新单片机仿真 8x8点阵做的贪吃蛇游戏最新单片机仿真 8x8...

    贪吃蛇游戏java版源码

    贪吃蛇游戏是一款经典的计算机游戏,它源自早期的诺基亚手机,并且在全球范围内广受欢迎。这个Java版本的贪吃蛇游戏源码是为那些希望深入理解游戏开发和Java GUI编程,特别是AWT(Abstract Window Toolkit)和Swing...

    嵌入式ARM的贪吃蛇游戏课程设计

    嵌入式ARM的贪吃蛇游戏课程设计 嵌入式ARM的贪吃蛇游戏课程设计是基于ARM架构的贪吃蛇游戏设计实践项目。该项目的目的是设计和实现一个基于ARM的贪吃蛇游戏机,使用飞利浦公司的LPC2124芯片板作为平台。 该项目的...

    基于Labview的贪吃蛇游戏设计报告.pdf

    根据提供的文件信息,内容涉及到LabVIEW这一图形化编程语言,以及利用该语言开发的贪吃蛇游戏。为了生成相关知识点,我们可以从LabVIEW的基本概念出发,讲述其在游戏开发中的应用,并尝试将文档中的片段整理为有意义...

    基于arm板的贪吃蛇游戏

    【基于ARM板的贪吃蛇游戏】是一种在嵌入式系统平台上实现的经典小游戏,它能够帮助开发者深入理解和掌握ARM架构的处理器以及相关的嵌入式系统开发技术。ARM(Advanced RISC Machines)处理器以其低功耗、高性能的...

    基于C++利用OpenGL设计贪吃蛇游戏【100011960】

    贪吃蛇游戏:玩家控制贪吃蛇在游戏区域里驰骋,避免碰到自己或障碍物,尽可能地吃更多的食物以生长! 游戏玩法: WASD控制蛇的移动 游戏开始,每隔一定时间会在地图空闲位置刷新一个食物,蛇触碰到食物后食物消失,...

    基于Arm-6818开发板的贪吃蛇游戏c++源码+项目说明.zip

    基于Arm-6818开发板的贪吃蛇游戏c++源码+项目说明.zip 基于Arm-6818开发板的贪吃蛇游戏c++源码+项目说明.zip 基于Arm-6818开发板的贪吃蛇游戏c++源码+项目说明.zip 基于Arm-6818开发板的贪吃蛇游戏c++源码+项目说明....

    简单贪吃蛇 游戏开发

    贪吃蛇游戏是一种经典的计算机程序,它源自早期的电子游戏,至今仍深受玩家喜爱。它的基本玩法是控制一条蛇在有限的空间内移动,通过吃食物来增长身体长度,同时避免碰撞到自己的身体或边界。这款“简单贪吃蛇”游戏...

    VB.NET贪吃蛇游戏

    【VB.NET贪吃蛇游戏】是一款使用微软的Visual Basic .NET编程语言开发的经典小游戏,它基于Windows Forms平台,利用GDI+图形库实现图形界面和游戏逻辑。在本项目中,我们将探讨VB.NET如何实现一个功能完备、交互性强...

    用Verilog实现的贪吃蛇游戏(基于FPGA开发板) fpga开发.pdf

    FPGA开发中的Verilog实现贪吃蛇游戏 FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,它可以根据需要进行配置和重配置。FPGA的开发需要使用Hardware Description Language(HDL),如Verilog或VHDL。...

    基于嵌入式开发的贪吃蛇游戏

    《基于嵌入式开发的贪吃蛇游戏》 在当今科技日新月异的时代,嵌入式系统在各个领域都发挥着重要的作用,从智能家居到工业自动化,无处不在。而作为学习和实践嵌入式系统的一个经典项目,贪吃蛇游戏的开发不仅能够...

    基于STM32的贪吃蛇游戏设计(程序、PCB)

    在本项目中,我们探讨的是一个基于STM32微控制器的贪吃蛇游戏设计。STM32是一款广泛应用的32位微处理器,以其高性能、低功耗和丰富的外设接口而受到开发者的青睐。贪吃蛇游戏是一款经典的电子游戏,玩家通过控制蛇的...

    简单的贪吃蛇游戏,VC++源代码

    【贪吃蛇游戏详解】 贪吃蛇是一款经典的电子游戏,起源于早期的计算机时代,深受玩家喜爱。在本文中,我们将深入探讨一个基于VC++编写的简单贪吃蛇游戏,特别是其不死版特性以及速度可调功能。 首先,我们要了解...

    贪吃蛇游戏(java实现)

    贪吃蛇游戏是一种经典的计算机游戏,它源自早期的电子游戏,并在各种平台上广泛流行。本项目采用Java编程语言实现,适合用作课程设计或毕业设计,以加深对Java编程和游戏开发的理解。以下是对这个Java实现贪吃蛇游戏...

    贪吃蛇游戏开题报告

    【开题报告】基于Android的贪吃蛇游戏 在当今科技快速发展的时代,移动设备的普及率不断提高,尤其是Android系统,已经成为全球范围内广泛使用的智能设备操作系统。鉴于Android平台的广泛影响力,开发基于Android的...

    JAVA贪吃蛇游戏毕业设计(源代码+论文)

    【标题】"JAVA贪吃蛇游戏毕业设计(源代码+论文)"揭示了这是一份基于Java编程语言实现的贪吃蛇游戏项目,适用于学生作为毕业设计。贪吃蛇游戏是一款经典的电子游戏,玩家通过控制蛇的移动来吃食物,每吃一颗食物,蛇...

    C++贪吃蛇游戏源码

    《C++实现贪吃蛇游戏详解》 贪吃蛇游戏,作为一款经典的休闲游戏,深受玩家喜爱。在本文中,我们将深入探讨如何使用C++编程语言来实现这一趣味盎然的游戏。C++以其强大的功能和灵活性,成为实现游戏程序的理想选择...

Global site tag (gtag.js) - Google Analytics