原生js完成打地鼠小游戏

:这是首页,有简单模式和地狱模式两种模式进行选择

这是选择完模式之后的游戏界面:30秒一局游戏倒计时,每打中一只老鼠加一分,没砸中减一分,没砸不加不减

首先准备几张图片

 

html代码:

 1 <!-- 初始界面 -->
 2     <div class="cover">
 3         <input type="button" value="简单模式" id="easy">
 4         <input type="button" value="地狱模式" id="hard">
 5     </div>
 6 
 7 
 8     <div id="content">
 9 
10         <div class="data-box">
11             <label>分数</label><input type="text" value="0" id="txtScore">
12             <label>分数</label><input type="text" value="30" id="txtRemtime">
13         </div>
14 
15         <!-- 快捷写法:(tr>td*4)*5   表示4行5列 -->
16         <table id="tb">
17             <tr>
18             <tr>
19                 <td></td>
20                 <td></td>
21                 <td></td>
22                 <td></td>
23                 <td></td>
24             </tr>
25             <tr>
26                 <td></td>
27                 <td></td>
28                 <td></td>
29                 <td></td>
30                 <td></td>
31             </tr>
32             <tr>
33                 <td></td>
34                 <td></td>
35                 <td></td>
36                 <td></td>
37                 <td></td>
38             </tr>
39             <tr>
40                 <td></td>
41                 <td></td>
42                 <td></td>
43                 <td></td>
44                 <td></td>
45             </tr>
46             <tr>
47                 <td></td>
48                 <td></td>
49                 <td></td>
50                 <td></td>
51                 <td></td>
52             </tr>
53             </tr>
54         </table>
55     </div>

css代码:

 1     <style>
 2         html,
 3         body {
 4             height: 100%;
 5         }
 6 
 7         body {
 8             margin: 0px;
 9             background: url(img/bj.jpg) no-repeat center / cover;
10         }
11 
12         .data-box {
13             text-align: center;
14             /* margin-top: 0px; */
15         }
16 
17         table {
18             margin: 20px auto;
19             /* 改变鼠标指针 */
20             cursor: url(img/favicon1.ico), auto;
21         }
22 
23         td {
24             width: 100px;
25             height: 100px;
26 
27             background: url(img/rat-hole.png) no-repeat center / cover;
28             border-radius: 50%;
29             /* 透明度 */
30             opacity:0.9;
31             text-align: center;
32         }
33 
34         img {
35             width: 70px;
36             height: 70px;
37         }
38 
39         .cover {
40             width: 100%;
41             height: 100%;
42             background-color: rgba(0, 0, 0, 0.5);
43         }
44 
45         .cover>input {
46             width: 180px;
47             height: 60px;
48             position: absolute;
49             left: 50%;
50             top: 50%;
51             margin-left: -90px;
52             margin-top: -100px;
53             border-radius: 20px;
54             border: none;
55             outline: none;
56 
57             background-image: linear-gradient(45deg, green, yellowgreen);
58             font-size: 18px;
59 
60         }
61 
62         .cover>#hard {
63             margin-top: 0px;
64         }
65 
66         #content{
67             display: none;
68         }
69     </style>

js代码:主要内容就在这了,注释很详细

 1     <script>
 2         //找到所有的td
 3         var tdList = document.getElementsByTagName('td');
 4 
 5         //找到倒计时的文本框
 6         var txtRemtime = document.getElementById("txtRemtime");
 7         //准备一个变量来倒计时
 8         var time = txtRemtime.value;
 9         //找到table   为了修改他的锤子
10         var tb = document.getElementById("tb");
11         //找到分数的文本框
12         var txtScore = document.getElementById("txtScore");
13         //准备一个变量
14         var score = 0;
15 
16         //找到遮罩层
17         var cover = document.querySelector('.cover');
18         //找到游戏内容
19         var content = document.getElementById('content');
20 
21 
22 
23         for (var i = 0; i < tdList.length; i++) {
24             //鼠标按下的事件
25             tdList[i].onmousedown = function () {
26                 //修改table的锤子
27                 tb.style.cursor = "url(img/favicon.ico), auto";
28             }
29 
30             tdList[i].onmouseup = function () {
31                 //复原锤子
32                 tb.style.cursor = "url(img/favicon1.ico), auto";
33 
34                 //判断咋的那个td里边有没有img ,有img就带变砸中了
35                 if (this.children.length != 0) {
36                     //分数+1
37                     score++;
38 
39                     //把这个img图片替换成哭的图片
40                     this.children[0].src = "img/mouse2.png";
41                 } else {
42                     //分数-1
43                     score--;
44                 }
45                 //把分数值赋值给文本框
46                 txtScore.value = score;
47             }
48         }
49 
50 
51         //找到简单模式  给他家点击事件   
52         document.getElementById('easy').onclick = function () {
53             startGame(1500, 1000);
54         }
55 
56         //找到地狱模式  给他家点击事件        
57         document.getElementById('hard').onclick = function () {
58             startGame(600, 500);
59         }
60 
61         //开始游戏
62         function startGame(creaTime, disTime) {
63             //隐藏大的遮罩层
64             cover.style.display = "none";
65             //游戏内容
66             content.style.display = "block";
67 
68             //生成随机小老鼠
69             var mouseID = setInterval(function () {
70                 //生成一个0-最大下标的随机数
71                 var idx = parseInt(Math.random() * tdList.length);
72                 //在生成的随机数对应的id的td添加小老鼠图片
73                 tdList[idx].innerHTML = '<img src="img/mouse1.png">';
74 
75                 // 清楚小老鼠
76                 setTimeout(function () {
77                     tdList[idx].innerHTML = '';
78                 }, disTime);
79             }, creaTime)
80 
81             
82             //倒计时游戏时间
83             var timerID = setInterval(function () {
84                 time--;
85                 txtRemtime.value = time;
86 
87                 if (time == 0) {
88                     //停止倒计时
89                     clearInterval(timerID);
90                     //停止生成随机小老鼠
91                     clearInterval(mouseID);
92                     alert("游戏结束!");
93                 }
94                 
95                 //计时器每秒执行一次
96 
97             }, 1000);
98         }
99     </script>

 

posted @ 2019-08-25 15:50  FengBrother  阅读(533)  评论(0编辑  收藏  举报