JavaScript 中阶 打地鼠游戏(基础版)

思路

1、先搭建整体布局样式
2、由于打地鼠游戏需要用到格子类型,所以会设计到表格table的使用
3、为了便于后面操作,需要把游戏中会用到的图片进行类名的命名,后面js部分就可以挂类来更改不同的表达效果
4、先获取游戏中会需要到的元素
5、渲染最高分数,通过本地储存的方法localStorage.getItem(),先获取本地数据,进行判断,如右数据,那最高分的元素就直接渲染这个数据,如果没有,分数则为0
6、设置鼠标在游戏中的变化效果,onmouseover移入,onmousedown按下和onmouseup松开,分别是三种不同的状态,具体根据需求来更改就可以了
7、封装渲染表格的函数,可自定义表格的行和列,利用双重for循环,外面循环成成行,里面循环生成列,注意一点,当每一行的列生成完成后,也就是里层循环完成后,需要拼接上当前行的结束标记,最后通过innerHTML渲染进之前我们html设定好的表格里
8、在封装函数需要记住的几点:每次渲染相当于游戏重新开始,那就需要在设定为当前分数归0开始,然后游戏结束提示也要清空
9、游戏开始,一般来讲都需要有一个按钮,当点击按钮后,游戏开始,所以在点击后需要调用前面封装的渲染函数。
10、通过计时器实现老鼠和炸弹几率在表格上跳动
11、需要获取到所有格子的一个数组类型,然后通过随机数得到某一个数字,范围就是0-格子的长度,通过遍历所有的格子,把类名全部清空,然后将得到随机格子添加之前Css设定的相应图片就可以了
12、下一步实现炸弹的出现几率,可以自定义设置一个范围内的随机数,用一个变量去与随机数中的某一个进行相等比较,如果相等了,在通过随机数得到某一个数字,范围就是0-格子的长度,通过遍历所有的格子,把类名全部清空,然后将得到随机格子添加之前Css设定的相应图片就可以了,和老鼠跳动同理
12、下一步就是打地鼠了,进行表格的点击事件,通过判断点击的格子的类型是否相同进行加分和游戏结束的判断,如果点击的是出现的老鼠,那就直接把击打后的老鼠样式直接更改类名实现,然后申明一个变量作为分数,每次++,并实时渲染到当前得分数
13、如果击打的炸弹,同理直接更改相应的类型实现效果,并渲染提示游戏结束
14、最后获取本地中的最高分,进行判断,如果获取到了值,就用当前分数和获取的分数进行比较,然后把分值大的在渲染到页面上,并储存进本地
15、如果没有获取到本地的数据,就直接把当前分值作为最高分渲染并储存,然后结束定时器
16、注意点:为了防止在游戏过程我们点击一次按钮就执行一次计时器,这样会导致熟读越来越快

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
地鼠是一款经典的游戏,在JavaScript中实现一个简单的打地鼠游戏,可以通过以下代码实现: HTML部分: ```html <!DOCTYPE html> <html> <head> <title>打地鼠游戏</title> <style> .game-board { display: grid; width: 300px; height: 300px; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 1fr); gap: 10px; } .hole { background-color: #e8e8e8; display: flex; align-items: center; justify-content: center; } .mole { background-color: #e91e63; color: #ffffff; font-size: 24px; font-weight: bold; display: flex; align-items: center; justify-content: center; } </style> </head> <body> <h1>打地鼠游戏</h1> <div class="game-board"></div> <script src="script.js"></script> </body> </html> ``` JavaScript部分: ```javascript document.addEventListener("DOMContentLoaded", function(event) { const gameBoard = document.querySelector(".game-board"); const holes = Array.from(gameBoard.querySelectorAll(".hole")); let score = 0; function randomTime(min, max) { return Math.round(Math.random() * (max - min) + min); } function randomHole(holes) { const index = Math.floor(Math.random() * holes.length); const hole = holes[index]; if (hole.classList.contains("mole")) { return randomHole(holes); } return hole; } function showMole() { const time = randomTime(200, 1000); const hole = randomHole(holes); hole.classList.add("mole"); setTimeout(function() { hole.classList.remove("mole"); if (!timeUp) { showMole(); } }, time); } function startGame() { score = 0; showMole(); setTimeout(function() { timeUp = true; }, 10000); } function bonkMole(e) { if (!e.isTrusted) return; // 防止欺骗点击 score++; this.classList.remove("mole"); } holes.forEach(function(hole) { hole.addEventListener("click", bonkMole); }); document.querySelector("#start-button").addEventListener("click", startGame); }); ``` 这段代码通过监听页面加载完成事件,在页面中创建一个网格,其中包含9个格子,通过在格子中随机显示一个地鼠,然后每点击一个地鼠,分数增加一分,游戏时间为10秒。点击开始按钮可以开始游戏。 以上就是一个简单的JavaScript实现打地鼠游戏的代码,可以通过浏览器运行来体验游戏的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值