小游戏—配对游戏(附带超详细源码,复制就可实现效果)

用web写一个配对游戏玩玩

实现效果如下视频所示:

配对游戏

详细代码解析:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>演示文档-配对游戏</title>
	<style type="text/css">
	table{
		margin:15px auto 15px; 
		background: rgba(60,180,100,0.3);
		color: blue;
		width: 500px;
		height: 500px;
	}
	hr{
			width: 600px;
			height: 5px;
			background: orange;
	}
	h2{text-align: center;}
	td{
		text-align: center;
		background: rgba(160,80,10,0.1);
		width: 100px;
		height: 100px;
	}
	footer{
		margin:0px auto;
			text-align: center;
			background: rgba(0,100,100,0.2);
			padding: 10px;
			width: 500px;
	}
	</style>
</head>
<body>
<h2>配对游戏<hr></h2>
	<table>
		<script>
			var cols=5,rows=4;
			for(var i=0;i<rows;i++){
				str="<tr>";
				for(var j=0;j<cols;j++){
					var sid="img"+((cols*i)+j)
					str+='<td  id="'+sid+'" onclick="showimg('+((cols*i)+j)+')"'+'>'
					str+='</td>'
				}
				str+="</tr>";
				document.write(str)
			}
		</script>
	</table>
	<footer>
		用时:<span id="gameTime"></span>&nbsp&nbsp&nbsp
		<input type="button" value="开始游戏" onclick="init()">
	</footer>
	<script type="text/javascript">
		var length=cols*rows //表格单元格数目
		var map=[] //存储单元格里的内容
		var user=[] //存储每个单元格是否可以翻开的状态
		var times=0;
		var newsatrt;
		var firstIndex=0,secondIndex=0;//点击第一张、第二张图片的索引
		var ctr=0;
		var finished;
		function $(x){
		 	return document.getElementById(x)
	    }
	    for(var i=0;i<length/2;i++){
	    	map[i]=i;
	    	map[length/2+i]=i
	    }
	    // alert(map)
	    function init(){
	    	for (var i=0;i<length;i++){
	    		$("img"+i).innerHTML=''
	    		user[i]=0;//是否显示图片,0为显示背面
	    	}
	    	// alert(map)
	    	map.sort(function(){return Math.random()-0.5})
	    	// alert(map)
	    	times=0; //计时器变量清零
	    	$("gameTime").innerHTML=times+'秒'
	    	newsatrt=true; //标记为新开局
	    }

	    function showimg(x){
	    	if (newsatrt) {
	    		start()
	    		newsatrt=false;
	    	}

	    	 $("img"+x).innerHTML=map[x]
	    	// alert(x)
	    	if (ctr==0) {
	    		ctr++
	    		firstIndex=x //记录第一张图片索引
	    	}else{
	    		if (firstIndex!=x) {
	    		secondIndex=x;//记录第二张图片索引
	    		ctr=0;
	    		check() 
	    		}
	    	}
	   
	    	
	    }

	    function start(){
	    	times+=1
	    	$("gameTime").innerHTML=times+'秒';
	    	setTimeout('start()',1000)
	    }

	    function check(){
	    	if (map[firstIndex]==map[secondIndex]) {
	    		finished++;
	    		user[firstIndex]=1;
				user[secondIndex]=1;//不能再翻
				ctr=0;
	    	}else if(user[firstIndex]==0){
	    		$('img'+firstIndex).innerHTML=' ';
	    		firstIndex=secondIndex;
	    		secondIndex=0;
	    		ctr++ //标记已经点击了一张
	    	}
	    	if (finished==length/2) {
	    		clearTimeout(startTime);
	    		if(confirm("恭喜你!再来一局?")==true){
	    			init()
	    		}
	    	}
	    }

 	</script>
</body>
</html>






  • 16
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值