爆火!用 HTML 制作超有趣的打地鼠游戏,零基础也能轻松上手

哈喽大家好呀~我是专注于分享前端小技巧的 [你的昵称]!最近发现很多粉丝留言说想学习 HTML 制作小游戏,今天就来教大家做一个童年经典 ——打地鼠游戏!不用复杂代码,零基础也能跟着教程一步步完成,做好后不仅能自己玩,还能分享给朋友炫耀哦~
一、为什么要做这个打地鼠游戏?
说起打地鼠,那可是街机厅里的回忆杀!现在用 HTML 制作这个游戏,有这几个超赞的优势:
技术门槛低:只需要 HTML、CSS 和一点点 JavaScript 基础,新手也能轻松驾驭
互动性强:做好后可以在手机、电脑上直接玩,聚会时拿出来和朋友比赛超有趣
可扩展性高:学会基础版后,还能自己添加音效、皮肤、难度选择等进阶功能
先给大家看看我做好的效果👇,是不是很想马上动手试试?
二、制作前的准备工作
1. 所需工具
一个文本编辑器(推荐 VS Code,免费又好用)
现代浏览器(Chrome、Firefox 等)
2. 游戏核心逻辑
打地鼠游戏的核心其实很简单:
地鼠随机出现在不同洞口
玩家点击出现的地鼠得分
设定游戏时间,时间结束后显示分数
三、详细制作步骤
1. 搭建 HTML 基础结构
首先,我们要创建一个 HTML 文件,搭建游戏的基本框架。打开 VS Code,新建一个文件,命名为whac-a-mole.html,然后输入以下代码:
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>打地鼠游戏</title><link rel="stylesheet" href="styles.css"></head><body><div class="game-container"><div class="header"><h1>打地鼠游戏</h1><div class="scoreboard"><div class="score">分数:<span id="score">0</span></div><div class="time">时间:<span id="time">60</span>秒</div></div></div><div class="game-board" id="gameBoard"><!-- 地鼠洞口将通过JS动态生成 --></div><button class="start-btn" id="startBtn">开始游戏</button></div><script src="script.js"></script></body></html>
这段代码搭建了游戏的基本结构,包括标题、分数显示、时间显示、游戏面板和开始按钮。接下来我们需要创建 CSS 文件来美化界面。
2. 用 CSS 美化游戏界面
在同一个文件夹下,新建一个styles.css文件,输入以下代码:
* {margin: 0;padding: 0;box-sizing: border-box;font-family: 'Arial', sans-serif;}body {display: flex;justify-content: center;align-items: center;min-height: 100vh;background-color: #f5f5f5;}.game-container {background-color: #fff;border-radius: 10px;box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);padding: 20px;width: 90%;max-width: 600px;}.header {text-align: center;margin-bottom: 20px;}h1 {color: #333;margin-bottom: 10px;}.scoreboard {display: flex;justify-content: space-around;margin-bottom: 20px;font-size: 18px;font-weight: bold;}.score, .time {padding: 8px 15px;border-radius: 5px;}.score {background-color: #e6f7ff;color: #1890ff;}.time {background-color: #fff3e0;color: #fa8c16;}.game-board {display: grid;grid-template-columns: repeat(3, 1fr);gap: 10px;margin-bottom: 20px;}.hole {height: 100px;background-color: #f0f0f0;border-radius: 10px;position: relative;overflow: hidden;cursor: pointer;transition: all 0.3s ease;}.hole:hover {background-color: #e0e0e0;}.mole {position: absolute;bottom: 0;width: 100%;height: 100%;background-image: url('mole.png'); /* 这里需要替换为实际的地鼠图片路径 */background-size: cover;background-position: center;transition: all 0.3s ease;}.start-btn {display: block;width: 100%;padding: 12px 20px;background-color: #1890ff;color: white;border: none;border-radius: 5px;font-size: 18px;font-weight: bold;cursor: pointer;transition: background-color 0.3s ease;}.start-btn:hover {background-color: #096dd9;}@media (max-width: 480px) {.game-container {padding: 15px;}.header h1 {font-size: 24px;}.scoreboard {font-size: 16px;}.hole {height: 80px;}}
这里我们设置了游戏的整体样式,包括背景、字体、游戏面板的布局等。需要注意的是,代码中用到了一个地鼠的图片mole.png,你可以自己找一张喜欢的地鼠图片放在同一个文件夹下,或者也可以用 CSS 绘制一个简单的地鼠图标。
3. 编写 JavaScript 实现游戏逻辑
最后,我们来编写最重要的 JavaScript 代码,实现游戏的核心逻辑。新建一个script.js文件,输入以下代码:
document.addEventListener('DOMContentLoaded', () => {// 获取DOM元素const gameBoard = document.getElementById('gameBoard');const startBtn = document.getElementById('startBtn');const scoreDisplay = document.getElementById('score');const timeDisplay = document.getElementById('time');// 游戏状态let score = 0;let time = 60;let gameActive = false;let gameInterval;let moleInterval;// 创建游戏面板(9个洞口)function createGameBoard() {gameBoard.innerHTML = '';for (let i = 0; i < 9; i++) {const hole = document.createElement('div');hole.classList.add('hole');hole.dataset.id = i;gameBoard.appendChild(hole);}}// 让地鼠随机出现function showMole() {// 先隐藏所有地鼠document.querySelectorAll('.mole').forEach(mole => {mole.remove();});// 随机选择一个洞口const holes = document.querySelectorAll('.hole');const randomHole = holes[Math.floor(Math.random() * holes.length)];// 创建地鼠元素const mole = document.createElement('div');mole.classList.add('mole');randomHole.appendChild(mole);// 随机显示时间(300-1000毫秒)setTimeout(() => {if (gameActive) {showMole();}}, Math.floor(Math.random() * 700) + 300);}// 处理地鼠被点击事件function handleMoleClick(e) {if (!gameActive) return;// 检查点击的是否是地鼠if (e.target.classList.contains('mole')) {score++;scoreDisplay.textContent = score;// 可以在这里添加得分音效// playSound('score.mp3');}}// 开始游戏function startGame() {if (gameActive) return;gameActive = true;score = 0;time = 60;scoreDisplay.textContent = 0;timeDisplay.textContent = 60;startBtn.textContent = '重新开始';// 开始计时gameInterval = setInterval(() => {time--;timeDisplay.textContent = time;if (time <= 0) {endGame();}}, 1000);// 开始显示地鼠moleInterval = setInterval(showMole, 1000);// 添加地鼠点击事件监听document.querySelectorAll('.hole').forEach(hole => {hole.addEventListener('click', handleMoleClick);});}// 结束游戏function endGame() {gameActive = false;clearInterval(gameInterval);clearInterval(moleInterval);startBtn.textContent = '开始游戏';// 可以在这里添加游戏结束音效// playSound('game-over.mp3');// 显示游戏结束提示alert(`游戏结束!你的得分是:${score}`);}// 初始化游戏function init() {createGameBoard();startBtn.addEventListener('click', startGame);}// 启动游戏init();});
这段代码实现了游戏的核心逻辑,包括地鼠的随机出现、得分计算、时间倒计时以及游戏的开始和结束控制。
四、游戏优化和进阶
1. 添加音效
想要让游戏更有氛围,可以添加一些音效:
地鼠被击中的音效
游戏开始和结束的音效
倒计时的音效
只需要在代码中添加一个playSound函数,然后在相应的位置调用即可。
2. 增加难度变化
让游戏更有挑战性,可以随着得分的增加提高地鼠出现的速度:
// 在showMole函数中,根据得分调整地鼠出现的速度const speed = Math.max(300, 1000 - (score * 50)); // 得分越高,速度越快setTimeout(() => {if (gameActive) {showMole();}}, Math.floor(Math.random() * (speed - 200)) + 200);
3. 自定义地鼠和洞口样式
你可以替换地鼠的图片,或者修改洞口的样式,让游戏更符合你的审美。比如,你可以找一些可爱的动物图片,做成 “打动物” 游戏,或者换成水果图片,做成 “打水果” 游戏。
五、常见问题解答
1. 地鼠图片怎么获取?
可以在网上搜索 “打地鼠游戏素材”,或者用 Canva 等工具自己制作一个简单的地鼠图标。
2. 游戏在手机上不好点击怎么办?
可以调整 CSS 中的洞口大小,让洞口在手机上显示得更大一些,方便点击。
3. 想添加更多关卡怎么办?
可以根据得分设置不同的关卡,每个关卡有不同的地鼠出现速度和游戏时间。
六、最后总结
恭喜你!现在你已经学会了用 HTML 制作一个简单又有趣的打地鼠游戏啦~这个项目非常适合前端新手练习,不仅能巩固 HTML 和 CSS 的知识,还能学习 JavaScript 的事件处理和定时器的使用。做好后别忘了分享给你的朋友,看看谁的得分更高~如果在制作过程中遇到任何问题,欢迎在评论区留言,我会尽力帮你解决!如果你觉得这个教程有用,别忘了点赞、收藏、转发哦~关注我,后续还会分享更多有趣的前端项目教程!
