`
zjixuanlv
  • 浏览: 5023 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

JS写的一个方块移动游戏

阅读更多
<script>
			//用于判定是否是开始初始化方块
			var mark = false;
			var starttime, endtime, finaltime = 0;  //记录游戏时间
			var array = new Array();  //用一个数组装所有绿色方块对象
			var timerarr = new Array();  //记录每个绿色方块 和 对应的计时器id
			
			function move(e){
				var xy = document.getElementById("xy");
				var self = document.getElementById("self");
				x = e.clientX;
				y = e.clientY;
				xy.value = "当前坐标:"+x +","+y;
				if(x>=454 && x<=530 &&y>=285 && y<=355 && mark==false){
						mark = true;
						initothers(20);
				}
				target(e,x,y);
			}
			
			//线宽4px  格边长36px   target函数定位白色方块的位置
			function target(e,x,y){
				
				var self = document.getElementById("self");
				if(x>=12 && x<=855 && y>=40 &&y<=525 && mark ==true){
					self.style.left = x +'px';
					self.style.top =  y +'px';
				}
			}
			//初始化白方块位置
			function init(){
				var today = new Date();
				starttime = today.getTime();
				document.getElementById("self").style.left = 454+'px';
				document.getElementById("self").style.top = 282+'px';
			}
			//用一个对象存储绿色方块信息
			function piece(){
				piece.prototype.id = -1;   //方块编号   从0开始
				piece.prototype.dire = 0;  //移动方向   1上 2下 3左 4右
				piece.prototype.top = 0;
				piece.prototype.left = 0;
			}

			//初始化num个绿色移动方块
			function initothers(num){
				for(var i=0;i<num;i++){
					document.getElementById("pan").innerHTML += "<div id='"+i+"'; style='height:36px;width:36px;background-color:#00FF00;z-index:100; position:absolute;left:-50px'></div>";
					//num1表示从横坐标出现还是纵坐标<1表示横 >1表示纵   num2 >1表示沿着坐标轴运动  <1表示逆着坐标走
					var num1 = Math.random()*2;
					var num2 = Math.random()*2;
					var top1 = 43;   //top1表示从上向下移动  
					var top2 = 563;  //top2表示从下向上移动
					var left1 = 14;  //left1表示左-->右
					var left2 = 894;  //右-->左
					var p = new piece();
					p.id = i;
					
					if(num1<1){
						if(num2>1){  //从上往下移动
							p.dire = 2;
							p.top = top1;
							p.left = (Math.ceil(Math.random()*23)*40-26);
							document.getElementById(i).style.left = p.left+'px';
							document.getElementById(i).style.top = top1+'px';
							
						}else{   //从下往上移动
							p.dire = 1;
							p.top = top2;
							p.left = (Math.ceil(Math.random()*23)*40-26);
 							document.getElementById(i).style.left = p.left+'px';
 							document.getElementById(i).style.top = top2+'px';
 							
						}
					}else{
						//从左向右移动
						if(num2>1){
							p.dire = 4;
							p.top = (Math.ceil(Math.random()*14)*40+3);
							p.left = left1;
							document.getElementById(i).style.left = left1+'px';
							document.getElementById(i).style.top = p.top+'px';
						}else{  //右向左
							p.dire = 3;
							p.top = (Math.ceil(Math.random()*14)*40+3);
							p.left = left2;
							document.getElementById(i).style.left = left2+'px';
							document.getElementById(i).style.top = p.top+'px';
						}
					}
					array.push(p);
				}
				
				//初始化完成  触发移动
				var n;
				for(n in array){
					go(n,array[n].id,array[n].dire);
				}
			}
			
			//重新定位一个绿色方块location
				function location(timerid,i,n,p){
					
					clearInterval(timerarr[timerid]);
					//alert(timerarr[timerid]);
					var num1 = Math.random()*2;
					var num2 = Math.random()*2;
					var top1 = 43;   
					var top2 = 563;  
					var left1 = 14; 
					var left2 = 894; 
					
					if(num1<1){
						if(num2>1){ 
							p.dire = 2;
							p.top = top1;
							p.left = (Math.ceil(Math.random()*23)*40-26);
							document.getElementById(i).style.left = p.left+'px';
							document.getElementById(i).style.top = top1+'px';
						}else{  
							p.dire = 1;
							p.top = top2;
							p.left = (Math.ceil(Math.random()*23)*40-26);
 							document.getElementById(i).style.left = p.left+'px';
 							document.getElementById(i).style.top = top2+'px';
						}
					}else{
						if(num2>1){
							p.dire = 4;
							p.top = (Math.ceil(Math.random()*14)*40+3);
							p.left = left1;
							document.getElementById(i).style.left = left1+'px';
							document.getElementById(i).style.top = p.top+'px';
						}else{  
							p.dire = 3;
							p.top = (Math.ceil(Math.random()*14)*40+3);
							p.left = left2;
							document.getElementById(i).style.left = left2+'px';
							document.getElementById(i).style.top = p.top+'px';
						}
					}
					go(n,p.id,p.dire);
			}
		    
			//绿色方块按规律直线移动
			   function go(n,i,dire){
			   	//当一个绿色方块出界  重新初始化一个进入界面
				var speed = Math.ceil(Math.random()*3)*10+10;  //速度随机
				
				if(dire==2){
						timerarr[i] = setInterval("array["+n+"].top>=565 ? location("+i+","+i+","+n+",array["+n+"]): array["+n+"].top+=8;document.getElementById("+i+").style.top = array["+n+"].top+'px'; check(array["+i+"])",speed);
					}
				if(dire==1){
						timerarr[i] = setInterval("array["+n+"].top<=41 ? location("+i+","+i+","+n+",array["+n+"]): array["+n+"].top-=8;document.getElementById("+i+").style.top = array["+n+"].top+'px';check(array["+i+"])",speed);
					}
				if(dire==4){
						timerarr[i] = setInterval("array["+n+"].left>=896 ? location("+i+","+i+","+n+",array["+n+"]): array["+n+"].left+=8;document.getElementById("+i+").style.left = array["+n+"].left+'px';check(array["+i+"])",speed);
					}
				if(dire==3){
						timerarr[i] = setInterval("array["+n+"].left<12 ? location("+i+","+i+","+n+",array["+n+"]): array["+n+"].left-=8;document.getElementById("+i+").style.left = array["+n+"].left+'px';check(array["+i+"])",speed);
					}
			} 
			
			//检查是否与白色方块相撞  传入绿色方块的对象进行判断
			function check(t){
				if(t.left<=x+75 && t.left>=x-36 && t.top<=y+75 && t.top>=y-36){
					var today = new Date();
					endtime = today.getTime();
					finaltime = (endtime - starttime - 0) / 1000;
					window.alert('游戏结束!你坚持了 ' + finaltime + ' 秒…');
					//alert('鼠标坐标'+x+','+y+'  方块坐标'+t.left+','+t.top);
					//重新载入页面
					document.location.reload();   
				}
			}
		</script>



<body onload="init();">
		<input id ="xy" disabled=true/>
		<!--<button id="self" style="position:relative;">ssss</button> -->
		<div id="pan" style=" height: 565; width: 925; background-image:url(http://dl.iteye.com/upload/picture/pic/97696/26d1caeb-c0ca-38e2-87ce-56e862235a79.jpg);background-repeat:no-repeat;" onmousemove="move(event)">
			<div id="self" style="height:76px;width:76px; background-color: white; position:absolute;border-width:1px; border-style:solid;border-color: red;"></div>
		</div>
		
	</body>
分享到:
评论

相关推荐

    js实现方块上下左右移动效果

    此外,`onOff`函数和`random`函数配合使用,用于随机选择方块移动的方向,创建一个更动态的移动效果。`onOff`函数通过切换flag的布尔值来控制方块的开始或停止移动,并根据传入的rand参数来确定是调用`moveLeft`还是...

    纯JS实现的俄罗斯方块小游戏

    总的来说,纯JS实现的俄罗斯方块小游戏是一个很好的学习项目,它涵盖了JavaScript的基础知识,同时也涉及到游戏开发的核心概念。通过实践,开发者可以提高编程技巧,理解游戏开发的流程,同时也能享受到编程的乐趣。

    用JavaScript写的俄罗斯方块小游戏

    通过以上各方面的结合,一个基于JavaScript的俄罗斯方块小游戏就能实现。这个过程不仅锻炼了编程技巧,还涵盖了游戏开发中的多个重要概念,对于学习JavaScript和游戏开发的人来说是一个很好的实践项目。

    原生JS写俄罗斯方块简单版

    【原生JS写俄罗斯方块简单版】是一个利用JavaScript实现的经典小游戏,主要涉及以下几个关键知识点: 1. **JavaScript基础**:整个游戏的核心是JavaScript代码,它负责游戏逻辑、动画效果和用户交互。开发者需要...

    js写的俄罗斯方块游戏

    3. 方块移动:通过JavaScript处理键盘事件,实现方块的左右移动和自动下落。每次移动都需要检查是否与其他方块或游戏边界发生碰撞。 4. 方块消除:当一行被填满,需要将其删除并更新其他行的位置,同时增加玩家分数...

    用纯javascript脚本写的一个俄罗斯方块

    【标题】: "用纯javascript脚本写的一个俄罗斯方块" 在编程领域,JavaScript是一种广泛应用于Web开发的脚本语言,它可以实现丰富的交互性。这个项目是利用JavaScript编写的一个经典游戏——俄罗斯方块,它是基于...

    js canvas写的游戏 俄罗斯方块

    在这个场景中,我们将深入探讨如何使用JavaScript和Canvas来实现一个经典的“俄罗斯方块”游戏。 1. **Canvas API基础** - **创建Canvas元素**:在HTML中,我们首先需要创建一个`&lt;canvas&gt;`标签,并设置其宽度和...

    JS经典俄罗斯方块小游戏.zip

    通过分析这个项目,我们可以学习到如何使用JavaScript进行基本的图形绘制、事件处理、定时任务以及游戏逻辑的实现,这对于想要学习网页游戏开发的初学者来说是一个很好的实践案例。同时,它也体现了JavaScript在现代...

    用js实现俄罗斯方块小游戏

    【标题】"用js实现俄罗斯方块小游戏"揭示了该压缩包内容的核心——一个使用JavaScript编程语言构建的在线俄罗斯方块游戏。JavaScript是一种广泛应用于Web开发的脚本语言,它通常用于实现网页的动态功能和交互性。在...

    原生js俄罗斯方块小游戏源码.zip

    本篇文章将详细解析一个使用原生JavaScript编写的俄罗斯方块小游戏源码,帮助你深入理解JavaScript的核心特性以及游戏开发的基本原理。 首先,我们要明确的是,原生JavaScript是不依赖任何库或框架的纯JavaScript...

    一个用JavaScript写的俄罗斯方块

    根据提供的文件信息,我们可以深入探讨如何使用JavaScript来开发一个经典的俄罗斯方块游戏。这不仅仅是一项技术挑战,也是对编程逻辑、算法设计以及DOM操作能力的一次综合考验。 ### 一、项目背景 俄罗斯方块...

    js俄罗斯方块网页游戏代码

    在JavaScript中,我们可以创建一个二维数组来表示游戏板,数组的每个元素代表一个单元格,其值可以表示方块的存在与否。通过更新数组,我们可以模拟方块的移动、旋转和消除。此外,JS的定时器函数setInterval或...

    原生js简易的俄罗斯方块游戏代码

    在本项目中,我们讨论的是一个使用原生JavaScript编写的简单版俄罗斯方块游戏。这个游戏是基于Web技术实现的,主要涉及HTML、CSS和JavaScript三个核心部分。下面将详细介绍这三个方面以及它们如何协同工作来创建游戏...

    JavaScript-使用javascript+phaser开发的小游戏之俄罗斯方块.zip

    在这个项目中,我们将深入探讨如何使用这两者来创建一个经典的俄罗斯方块游戏。俄罗斯方块是一款简单但令人上瘾的游戏,玩家需要操纵各种形状的方块,使它们在游戏区域底部排列成完整的一行或多行,以消除得分。 ...

    用JavaScript编写的俄罗斯方块游戏

    通过以上讲解,可以看出,用JavaScript编写俄罗斯方块游戏是一个综合性的项目,涵盖了编程基础、游戏逻辑、动画制作、用户交互等多个方面,是学习JavaScript和理解游戏开发的绝佳实践。通过分析和实现这个游戏,学生...

    简单的js俄罗斯方块游戏源码.rar

    【标题】"简单的js俄罗斯方块游戏源码"是一个基于JavaScript实现的俄罗斯方块小游戏,它展示了如何在网页上创建一款基本的休闲游戏。通过学习和分析这个源码,你可以了解JavaScript编程、HTML布局以及CSS样式在网页...

    俄罗斯方块游戏源码(纯JS)

    根据提供的信息,我们可以深入探讨如何使用纯JavaScript来创建一个俄罗斯方块游戏,并解析这段代码片段中的关键函数及其在游戏开发中的应用。 ### 俄罗斯方块游戏概述 俄罗斯方块是一款经典的下落式拼图视频游戏,...

    简单的js俄罗斯方块游戏源码.zip

    【标题】"简单的js俄罗斯方块游戏源码.zip"是一个包含JavaScript实现的俄罗斯方块小游戏的源代码包。这款游戏以简洁的线条设计风格呈现,旨在为玩家提供一个基础的在线娱乐体验。 【描述】提到的"简单的js俄罗斯...

Global site tag (gtag.js) - Google Analytics