JavaScript实现“打地鼠”游戏开发(3)——锤子的显示及游戏音效的添加(基于H5+CSS3+JS+jQuery实现)

说明:

上一节我们实现了打地鼠游戏的主体功能,包括:老鼠的随机出现、击中目标后分数增加,倒计时为0时游戏结束等功能。接下来我们将对游戏音效的添加、锤子效果的实现进行具体实现。

这是前两节的地址链接:

JS实现“打地鼠”游戏开发(1)——超详细功能分析与游戏界面实现(基于H5+CSS3+JS+jQuery实现)https://blog.csdn.net/qq_32925031/article/details/88624345

JS实现“打地鼠”游戏开发(2)——超详细游戏主体功能代码实现(基于H5+CSS3+JS+jQuery实现)

https://blog.csdn.net/qq_32925031/article/details/88638411

四、代码实现

6、锤子打击效果

我们上一节实现的效果是这样的:
在这里插入图片描述
击打是用鼠标光标的点击,而我们所希望的是能够用锤子进行打击,该如何实现呢?实际上,只需要一行代码:

	$(".area").css('cursor','url("./image/tool.png"),move');

cursor的改为一个图片即可。

我们来看一下效果:
在这里插入图片描述

7、添加游戏音效

玩游戏时,增加音效会提升我们的游戏体验,我们要实现的是打中一只地鼠,就产生爆炸的声音,我们这就来实现这一功能。

因为“爆炸”产生这个“事件”是在击中时发生的,所以我们在原来“得分计数”的代码中加入以下代码:

$('.area').append("<audio src='./audio/click.mp3' autoplay='autoplay'></audio>")

在这里插入图片描述
这时候的效果已经产生了,击中小黄人的时候会出现爆炸的音效。

  • 9
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面我将为你介绍如何使用 HTML、CSS 和 JavaScript 开发一个打地鼠游戏。 1. HTML 结构 首先,我们需要创建 HTML 结构。游戏主要分为两个部分:游戏界面和计分板。游戏界面部分需要创建一个包含 9 个格子的网格,每个格子都会出现地鼠,我们需要绑定点击事件检测是否打中地鼠。计分板部分需要显示当前分数和剩余时间。 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>打地鼠游戏</title> <style> /* 游戏界面样式 */ #game-board { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; } .cell { width: 100px; height: 100px; background-color: #ccc; text-align: center; line-height: 100px; font-size: 40px; cursor: pointer; } .cell.active { background-color: #f00; } /* 计分板样式 */ #score-board { display: flex; justify-content: space-between; align-items: center; padding: 10px; } #score-board span { font-size: 24px; } </style> </head> <body> <div id="game-board"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> </div> <div id="score-board"> <span id="score">0</span> <span id="time">60</span> </div> <script src="game.js"></script> </body> </html> ``` 2. CSS 样式 接下来,我们需要为游戏界面和计分板添加样式。游戏界面部分需要创建 9 个格子,使用 CSS 网格布局实现。计分板部分需要使用 flex 布局实现。 3. JavaScript 逻辑 最后,我们需要编写 JavaScript 逻辑,实现地鼠游戏的核心功能。 首先,我们需要定义一些变量来保存游戏状态,比如分数、剩余时间、地鼠位置等。 ```javascript let score = 0; // 当前得分 let time = 60; // 剩余时间 let holes = []; // 地鼠位置数组 let activeHole = null; // 当前出现的地鼠位置 let timer = null; // 定时器 ``` 然后,我们需要编写生成地鼠位置的函数,该函数会在游戏开始时调用。 ```javascript function generateHoles() { holes = Array.from({ length: 9 }, (_, index) => index); holes.sort(() => Math.random() - 0.5); // 随机打乱位置 } ``` 接着,我们需要编写显示地鼠的函数,该函数会在定时器每次运行时调用。 ```javascript function showMole() { // 随机选择一个未出现的位置 const availableHoles = holes.filter(hole => hole !== activeHole); activeHole = availableHoles[Math.floor(Math.random() * availableHoles.length)]; // 在选中的位置上显示地鼠 const cell = document.querySelectorAll('.cell')[activeHole]; cell.classList.add('active'); // 1 秒后隐藏地鼠 setTimeout(hideMole, 1000); } ``` 最后,我们需要编写检测点击事件的函数,该函数会在用户点击格子时调用。 ```javascript function handleClick(event) { if (event.target.classList.contains('active')) { // 打中地鼠,加分 score += 10; document.querySelector('#score').textContent = score; // 隐藏地鼠 hideMole(); } } function hideMole() { const cell = document.querySelectorAll('.cell')[activeHole]; cell.classList.remove('active'); // 继续显示地鼠 setTimeout(showMole, 500); } ``` 最后,我们需要编写启动游戏的函数,该函数会在用户点击开始按钮时调用。 ```javascript function startGame() { // 初始化游戏状态 score = 0; time = 60; generateHoles(); activeHole = null; // 显示分数和剩余时间 document.querySelector('#score').textContent = score; document.querySelector('#time').textContent = time; // 注册点击事件 const cells = document.querySelectorAll('.cell'); cells.forEach(cell => cell.addEventListener('click', handleClick)); // 启动定时器 timer = setInterval(() => { time--; document.querySelector('#time').textContent = time; if (time === 0) { // 时间到,游戏结束 clearInterval(timer); cells.forEach(cell => cell.removeEventListener('click', handleClick)); alert(`游戏结束,你的得分是 ${score}`); } }, 1000); // 显示地鼠 showMole(); } ``` 最后,我们需要在 HTML 文件中添加一个开始按钮,并绑定启动游戏的函数。 ```html <button onclick="startGame()">开始游戏</button> ``` 现在,我们已经完成了打地鼠游戏开发。完整的代码如下: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>打地鼠游戏</title> <style> /* 游戏界面样式 */ #game-board { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; } .cell { width: 100px; height: 100px; background-color: #ccc; text-align: center; line-height: 100px; font-size: 40px; cursor: pointer; } .cell.active { background-color: #f00; } /* 计分板样式 */ #score-board { display: flex; justify-content: space-between; align-items: center; padding: 10px; } #score-board span { font-size: 24px; } </style> </head> <body> <div id="game-board"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> </div> <div id="score-board"> <span id="score">0</span> <span id="time">60</span> </div> <button onclick="startGame()">开始游戏</button> <script> let score = 0; // 当前得分 let time = 60; // 剩余时间 let holes = []; // 地鼠位置数组 let activeHole = null; // 当前出现的地鼠位置 let timer = null; // 定时器 function generateHoles() { holes = Array.from({ length: 9 }, (_, index) => index); holes.sort(() => Math.random() - 0.5); // 随机打乱位置 } function showMole() { // 随机选择一个未出现的位置 const availableHoles = holes.filter(hole => hole !== activeHole); activeHole = availableHoles[Math.floor(Math.random() * availableHoles.length)]; // 在选中的位置上显示地鼠 const cell = document.querySelectorAll('.cell')[activeHole]; cell.classList.add('active'); // 1 秒后隐藏地鼠 setTimeout(hideMole, 1000); } function handleClick(event) { if (event.target.classList.contains('active')) { // 打中地鼠,加分 score += 10; document.querySelector('#score').textContent = score; // 隐藏地鼠 hideMole(); } } function hideMole() { const cell = document.querySelectorAll('.cell')[activeHole]; cell.classList.remove('active'); // 继续显示地鼠 setTimeout(showMole, 500); } function startGame() { // 初始化游戏状态 score = 0; time = 60; generateHoles(); activeHole = null; // 显示分数和剩余时间 document.querySelector('#score').textContent = score; document.querySelector('#time').textContent = time; // 注册点击事件 const cells = document.querySelectorAll('.cell'); cells.forEach(cell => cell.addEventListener('click', handleClick)); // 启动定时器 timer = setInterval(() => { time--; document.querySelector('#time').textContent = time; if (time === 0) { // 时间到,游戏结束 clearInterval(timer); cells.forEach(cell => cell.removeEventListener('click', handleClick)); alert(`游戏结束,你的得分是 ${score}`); } }, 1000); // 显示地鼠 showMole(); } </script> </body> </html> ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值