最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js面向对象之如何实现拼图游戏

来源:动视网 责编:小OO 时间:2020-11-27 19:56:33
文档

js面向对象之如何实现拼图游戏

一、html代码。<;,<。DOCTYPE html>;<;html lang=";en";>;<;head>;<;meta charset=";UTF-8";>;<;title>;拼图小游戏<;/title>;<;style>;body。二、js代码;
推荐度:
导读一、html代码。<;,<。DOCTYPE html>;<;html lang=";en";>;<;head>;<;meta charset=";UTF-8";>;<;title>;拼图小游戏<;/title>;<;style>;body。二、js代码;
 这篇文章主要介绍了js面向对象之如何实现拼图游戏,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

一、html代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>拼图小游戏</title>
<style>
body,td { margin:0; padding:0; }
#begin { display:block; margin:20px auto; }
table { margin:80px auto; background:#fff; border:10px solid pink; }
td { width:100px; height:100px; border:1px solid #ccc; cursor:pointer; background:url(img.jpg) no-repeat; }
</style>
<script src="js.js"></script>
<script>
window.onload = function(){
	var thisGame = new PinTuGame('begin');
}
</script>

</head>

<body>
<button id="begin">开始</button>
</body>
</html>

二、js代码

function PinTuGame(id){
	var that = this;
	this.oBtn = document.getElementById(id);
	this.oTable = document.createElement('table');
	this.oTbody = document.createElement('tbody');
	this.aTd = null;
	this.aTdMsg = [];	//用于存储每个图片的信息
	this.num = 0;	//用于判断拼图是否完成
	this.oTable.cellSpacing = '0';
	
	this.createElem();	//初始化游戏界面
	this.oBtn.onclick = function(){
	for(var i = 0; i<that.aTd.length; i++){
	that.aTd[i].style.opacity = 1;	
	}
	this.innerHTML = '重新开始';
	that.aTd[that.aTd.length-1].style.opacity = 0;
	
	var iAlpha = 100;
	var sp = -10;
	var timer = setInterval(function(){
	iAlpha += sp;
	that.oTbody.style.opacity = iAlpha / 100;
	
	if(iAlpha <=0) { sp = -sp; that.randomElem();}
	if(iAlpha > 100) {clearInterval(timer) };
 	},15);	
	that.beginGame();	
	}
}

PinTuGame.prototype = {	//初始化游戏界面
	createElem: function(){
	for(var i =0; i<4; i++){
	var oTr = document.createElement('tr');
	for(var j =0; j<4; j++){
	var oTd = document.createElement('td');
	this.num ++;
	var tdMsg = {
	seq: this.num,
	bgPosition: -100*j+'px '+ -100*i+'px' 	
	};	
	this.aTdMsg.push(tdMsg);
	oTr.appendChild(oTd);
	}
	this.oTbody.appendChild(oTr);	
	}	
	this.oTable.appendChild(this.oTbody);
	document.body.appendChild(this.oTable);	
	
	this.aTd = this.oTbody.getElementsByTagName('td');
	for(var i = 0; i<this.aTd.length; i++){
	this.aTd[i].json = this.aTdMsg[i];
	this.aTd[i].style.backgroundPosition = this.aTd[i].json.bgPosition;
	}
	},
	randomElem: function(){ 	//随机排序图片
	this.aTdMsg.sort(function (){
	return Math.random()-0.5; 
	});
	for(var i=0;i<this.aTd.length;i++){
	this.aTd[i].json = this.aTdMsg[i];
	this.aTd[i].style.backgroundPosition = this.aTd[i].json.bgPosition;
	}
	},
	beginGame: function(){	//开始游戏
	var that = this;
	var rows = this.oTbody.rows;
	for(var i =0; i<4; i++){
	for(var j =0; j<4; j++){
	rows[i].cells[j].Y = i;
	rows[i].cells[j].X = j;
	
	rows[i].cells[j].onclick = function(){
	var arr = [ //获取该图片的上右下左,四个方向的坐标
	[this.Y-1, this.X],
	[this.Y, this.X+1],
	[this.Y+1, this.X],
	[this.Y, this.X-1]	
	];	
	for(var i = 0; i<arr.length; i++){
	if( arr[i][0]<0 || arr[i][1]<0 || arr[i][0]>3 || arr[i][1]>3)continue;
	if( rows[arr[i][0]].cells[ arr[i][1] ].style.opacity == '0' ){
	
	rows[arr[i][0]].cells[ arr[i][1] ].style.opacity = 1;
	this.style.opacity=0;
	
	//与隐藏的td交换json对象
	var thisJson = this.json;
	this.json = rows[arr[i][0]].cells[ arr[i][1]].json; 
	rows[arr[i][0]].cells[arr[i][1]].json = thisJson;	
	
	//与隐藏的td交换bakcground-position
	this.style.backgroundPosition=this.json.bgPosition;
	rows[arr[i][0]].cells[arr[i][1]].style.backgroundPosition=rows[arr[i][0]].cells[arr[i][1]].json.bgPosition;	
	}
	}
	that.checkWin();
	};	
	}	
	}
	},
	checkWin: function(){	//检测游戏是否完成
	var aJson = [];
	for(var i = 0; i<this.aTd.length; i++){
	aJson.push(this.aTd[i].json.seq);
	}	
	for(var i = 0; i<aJson.length-1; i++){
	if(aJson[i]>aJson[i+1])return;	
	}
	for(var i = 0; i<this.aTd.length; i++){
	this.aTd[i].style.opacity = 1;	
	}
	alert('恭喜,胜利啦!');
	location.reload(); 
	}	
}

二、游戏图片素材


文档

js面向对象之如何实现拼图游戏

一、html代码。<;,<。DOCTYPE html>;<;html lang=";en";>;<;head>;<;meta charset=";UTF-8";>;<;title>;拼图小游戏<;/title>;<;style>;body。二、js代码;
推荐度:
标签: 实现 js 对象
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top