js实现表格配对小游戏

js实现表格配对小游戏

一、总结

一句话总结:

二、js实现表格配对

1、配对游戏案例说明

  • 实例描述:

    当用户点击两个相同的图案或字符后配对成功,全部配对成功后游戏获胜

    案例008采用了大家常见的小游戏来帮助大家提高应用JS解决实际问题的能力,需要说明的是该案例在很大程度上做了简化,大家课下练习的时候可以发挥自己的想象力进一步来完善该游戏

2、截图

3、代码

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>演示文档-配对游戏</title>
  6     <style type="text/css">
  7     table{
  8         margin:15px auto 15px; 
  9         background: rgba(60,180,100,0.3);
 10         color: blue;
 11         width: 500px;
 12         height: 500px;
 13     }
 14     hr{
 15             width: 600px;
 16             height: 5px;
 17             background: orange;
 18     }
 19     h2{text-align: center;}
 20     td{
 21         text-align: center;
 22         background: rgba(160,80,10,0.1);
 23         width: 100px;
 24         height: 100px;
 25     }
 26     footer{
 27         margin:0px auto;
 28             text-align: center;
 29             background: rgba(0,100,100,0.2);
 30             padding: 10px;
 31             width: 500px;
 32     }
 33     </style>
 34 </head>
 35 <body>
 36 <h2>配对游戏<hr></h2>
 37     <table>
 38         <script>
 39             var cols=5,rows=4;
 40             for(var i=0;i<rows;i++){
 41                 str="<tr>";
 42                 for(var j=0;j<cols;j++){
 43                     var sid="img"+((cols*i)+j)
 44                     str+='<td  id="'+sid+'" onclick="showimg('+((cols*i)+j)+')"'+'>'
 45                     str+='</td>'
 46                 }
 47                 str+="</tr>";
 48                 document.write(str)
 49             }
 50         </script>
 51     </table>
 52     <footer>
 53         用时:<span id="gameTime"></span>&nbsp&nbsp&nbsp
 54         <input type="button" value="开始游戏" onclick="init()">
 55     </footer>
 56     <script type="text/javascript">
 57         var length=cols*rows //表格单元格数目
 58         var map=[] //存储单元格里的内容
 59         var user=[] //存储每个单元格是否可以翻开的状态
 60         var times=0;
 61         var newsatrt;
 62         var firstIndex=0,secondIndex=0;//点击第一张、第二张图片的索引
 63         var ctr=0;
 64         var finished;
 65         function $(x){
 66              return document.getElementById(x)
 67         }
 68         for(var i=0;i<length/2;i++){
 69             map[i]=i;
 70             map[length/2+i]=i
 71         }
 72         // alert(map)
 73         function init(){
 74             for (var i=0;i<length;i++){
 75                 $("img"+i).innerHTML=''
 76                 user[i]=0;//是否显示图片,0为显示背面
 77             }
 78             // alert(map)
 79             map.sort(function(){return Math.random()-0.5})
 80             // alert(map)
 81             times=0; //计时器变量清零
 82             $("gameTime").innerHTML=times+''
 83             newsatrt=true; //标记为新开局
 84         }
 85 
 86         function showimg(x){
 87             if (newsatrt) {
 88                 start()
 89                 newsatrt=false;
 90             }
 91 
 92              $("img"+x).innerHTML=map[x]
 93             // alert(x)
 94             if (ctr==0) {
 95                 ctr++
 96                 firstIndex=x //记录第一张图片索引
 97             }else{
 98                 if (firstIndex!=x) {
 99                 secondIndex=x;//记录第二张图片索引
100                 ctr=0;
101                 check() 
102                 }
103             }
104        
105             
106         }
107 
108         function start(){
109             times+=1
110             $("gameTime").innerHTML=times+'';
111             setTimeout('start()',1000)
112         }
113 
114         function check(){
115             if (map[firstIndex]==map[secondIndex]) {
116                 finished++;
117                 user[firstIndex]=1;
118                 user[secondIndex]=1;//不能再翻
119                 ctr=0;
120             }else if(user[firstIndex]==0){
121                 $('img'+firstIndex).innerHTML=' ';
122                 firstIndex=secondIndex;
123                 secondIndex=0;
124                 ctr++ //标记已经点击了一张
125             }
126             if (finished==length/2) {
127                 clearTimeout(startTime);
128                 if(confirm("恭喜你!再来一局?")==true){
129                     init()
130                 }
131             }
132         }
133 
134      </script>
135 </body>
136 </html>
原文地址:https://www.cnblogs.com/Renyi-Fan/p/9144825.html