【HTML】纯前端网页小游戏-戳破彩泡

分享一个简单有趣的网页小游戏 - 彩色泡泡爆破。玩家需要点击屏幕上随机出现的彩色泡泡来得分。 

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>彩色泡泡爆破</title><style>body {font-family: 'Arial', sans-serif;text-align: center;background-color: #f0f8ff;margin: 0;padding: 20px;overflow: hidden;user-select: none;}#game-container {position: relative;width: 100%;height: 70vh;border: 2px dashed #ccc;border-radius: 10px;margin: 20px auto;background-color: white;}.bubble {position: absolute;border-radius: 50%;cursor: pointer;transition: transform 0.1s;box-shadow: 0 0 10px rgba(0,0,0,0.2);}.bubble:hover {transform: scale(1.05);}#score-display {font-size: 24px;margin: 10px;color: #333;}#timer {font-size: 20px;margin: 10px;color: #e74c3c;}#start-btn {padding: 10px 20px;font-size: 18px;background-color: #2ecc71;color: white;border: none;border-radius: 5px;cursor: pointer;transition: background-color 0.3s;}#start-btn:hover {background-color: #27ae60;}#game-over {display: none;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);background-color: rgba(255, 255, 255, 0.9);padding: 20px;border-radius: 10px;box-shadow: 0 0 20px rgba(0,0,0,0.3);}</style>
</head>
<body><h1>彩色泡泡爆破</h1><p>点击出现的泡泡得分!60秒内看你能得多少分!</p><div id="score-display">得分: 0</div><div id="timer">剩余时间: 60秒</div><button id="start-btn">开始游戏</button><div id="game-container"><div id="game-over"><h2>游戏结束!</h2><p id="final-score">你的得分: 0</p><button id="restart-btn">再玩一次</button></div></div><script>const gameContainer = document.getElementById('game-container');const scoreDisplay = document.getElementById('score-display');const timerDisplay = document.getElementById('timer');const startBtn = document.getElementById('start-btn');const gameOverDiv = document.getElementById('game-over');const finalScoreDisplay = document.getElementById('final-score');const restartBtn = document.getElementById('restart-btn');let score = 0;let timeLeft = 60;let gameInterval;let timerInterval;let isGameRunning = false;// 泡泡颜色数组const bubbleColors = ['#FF5252', '#FF4081', '#E040FB', '#7C4DFF', '#536DFE', '#448AFF', '#40C4FF', '#18FFFF', '#64FFDA', '#69F0AE', '#B2FF59', '#EEFF41', '#FFFF00', '#FFD740', '#FFAB40', '#FF6E40'];// 创建泡泡function createBubble() {if (!isGameRunning) return;const bubble = document.createElement('div');bubble.className = 'bubble';// 随机大小 (30-80px)const size = Math.floor(Math.random() * 50) + 30;bubble.style.width = `${size}px`;bubble.style.height = `${size}px`;// 随机位置const maxX = gameContainer.clientWidth - size;const maxY = gameContainer.clientHeight - size;const posX = Math.floor(Math.random() * maxX);const posY = Math.floor(Math.random() * maxY);bubble.style.left = `${posX}px`;bubble.style.top = `${posY}px`;// 随机颜色const colorIndex = Math.floor(Math.random() * bubbleColors.length);bubble.style.backgroundColor = bubbleColors[colorIndex];// 点击事件bubble.addEventListener('click', () => {if (!isGameRunning) return;// 播放爆破音效playPopSound();// 增加分数score++;scoreDisplay.textContent = `得分: ${score}`;// 爆破动画bubble.style.transform = 'scale(1.2)';bubble.style.opacity = '0';// 移除泡泡setTimeout(() => {bubble.remove();}, 200);});gameContainer.appendChild(bubble);// 泡泡自动消失 (3-6秒)setTimeout(() => {if (bubble.parentNode) {bubble.style.opacity = '0';setTimeout(() => bubble.remove(), 300);}}, Math.random() * 3000 + 3000);}// 播放爆破音效function playPopSound() {const popSound = new Audio();popSound.src = 'https://assets.mixkit.co/sfx/preview/mixkit-arcade-game-jump-coin-216.mp3';popSound.play().catch(e => console.log('无法播放音效:', e));}// 开始游戏function startGame() {if (isGameRunning) return;// 重置游戏状态score = 0;timeLeft = 60;isGameRunning = true;scoreDisplay.textContent = `得分: ${score}`;timerDisplay.textContent = `剩余时间: ${timeLeft}秒`;gameOverDiv.style.display = 'none';// 清除所有现有泡泡document.querySelectorAll('.bubble').forEach(bubble => bubble.remove());// 开始生成泡泡gameInterval = setInterval(createBubble, 800);// 开始倒计时timerInterval = setInterval(() => {timeLeft--;timerDisplay.textContent = `剩余时间: ${timeLeft}秒`;if (timeLeft <= 0) {endGame();}}, 1000);}// 结束游戏function endGame() {isGameRunning = false;clearInterval(gameInterval);clearInterval(timerInterval);// 显示游戏结束界面finalScoreDisplay.textContent = `你的得分: ${score}`;gameOverDiv.style.display = 'block';}// 事件监听startBtn.addEventListener('click', startGame);restartBtn.addEventListener('click', startGame);</script>
</body>
</html>

游戏特点

  1. 彩色泡泡:随机大小、颜色和位置出现的泡泡

  2. 点击得分:点击泡泡得分,有爆破动画效果

  3. 时间限制:60秒倒计时挑战

  4. 音效反馈:点击泡泡时有爆破音效

  5. 响应式设计:适应不同屏幕大小

如何扩展这个游戏

  1. 添加不同分数的特殊泡泡(如金色泡泡得5分)

  2. 增加难度级别(泡泡出现速度随时间加快)

  3. 添加连击系统(快速连续点击泡泡获得额外分数)

  4. 添加本地存储功能保存最高分

  5. 增加更多动画效果和音效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/76763.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何实现单例模式?

一、模式定义与核心价值 单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;保证一个类仅有一个实例&#xff0c;并提供全局访问点。其核心价值在于&#xff1a; ​​资源控制​​&#xff1a;避免重复创建消耗性资源&#xff08;如数据库连…

Three.js 系列专题 1:入门与基础

什么是 Three.js? Three.js 是一个基于 WebGL 的 JavaScript 库,它简化了 3D 图形编程,让开发者无需深入了解底层 WebGL API 就能创建复杂的 3D 场景。它广泛应用于网页游戏、可视化、虚拟现实等领域。 学习目标 理解 Three.js 的核心组件:场景(Scene)、相机(Camera)…

蓝桥云客---蓝桥速算

3.蓝桥速算【算法赛】 - 蓝桥云课 问题描述 蓝桥杯大赛最近新增了一项娱乐比赛——口算大赛&#xff0c;目的是测试选手的口算能力。 比赛规则如下&#xff1a; 初始给定一个长度为 N 的数组 A&#xff0c;其中第 i 个数字为 Ai​。随后数组会被隐藏&#xff0c;并进行 Q 次…

Oracle迁移达梦遇中断?试试SQLark的断点续迁功能!

在企业级数据迁移项目中&#xff0c;如果迁移单表数据量超过亿行、占用空间超过100GB时&#xff0c;一旦遇到网络中断或迁移报错&#xff0c;往往需要整表重新迁移&#xff0c;导致效率低下&#xff0c;严重影响项目进度。针对这一痛点&#xff0c;SQLark 支持对 Oracle→DM 的…

【C/C++算法】蓝桥杯之递归算法(如何编写想出递归写法)

绪论&#xff1a;冲击蓝桥杯一起加油&#xff01;&#xff01; 每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” 绪论​&#xff1a; ———————— 早关注不迷路&#xff0c;话不多说安全带系好&#xff0c;发车啦&am…

[ctfshow web入门] web5

前置知识 引用博客&#xff1a;phps的利用 当服务器配置了 .phps 文件类型时&#xff0c;访问 .phps 文件会以语法高亮的形式直接显示 PHP 源代码&#xff0c;而不是执行它。.phps被作为辅助开发者的一种功能&#xff0c;开发者可以通过网站上访问xxx.phps直接获取高亮源代码 …

day 8 TIM定时器

一、STM32 定时器概述 1. 定时器的概述定时器的基本功能&#xff0c;但是 STM32 的定时器除了具有定时功能之外&#xff0c;也具有定时器中断功能&#xff0c;还具有输入捕获&#xff08;检测外部信号&#xff09;以及输出比较功能&#xff08;输出不同的脉冲&#xff09;&…

Spring Boot 中使用 Redis:从入门到实战

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

hi3516cv610通过menuconfig关闭的宏记录

hi3516cv610通过menuconfig关闭的宏记录 defconfig为 hi3516cv610_debug_defconfig或hi3516cv610_new_defconfig 1、 变为 2、 变为 3、 变为 4、 变为 5、 变为

WebSocket 详解:构建一个复杂的实时聊天应用

文章目录 一、前言二、WebSocket 基础2.1 WebSocket 与 HTTP 的区别2.2 WebSocket 的优点 三、搭建 WebSocket 服务端3.1 安装 ws 和 redis 库3.2 创建 WebSocket 服务端3.3 创建用户身份验证 四、前端实现 WebSocket 客户端4.1 创建 Vue 3 项目4.2 实现 WebSocket 连接和用户注…

【JavaEE进阶】Spring AOP入门

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗 如有错误&#xff0c;欢迎指出~ AOP是Spring框架的第⼆⼤核⼼(第⼀⼤核⼼是 IoC) 什么是AOP&#xff1f; • AspectOrientedProgramming&#xff08;⾯向切⾯编程&#xff09; 什么是⾯向切⾯编程呢? 切…

算法思想之双指针(一)

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;算法思想之双指针(一) 发布时间&#xff1a;2025.4.4 隶属专栏&#xff1a;算法 目录 双指针算法介绍对撞指针&#xff1a;快慢指针&#xff1a; 例题移动零题目链接题目描述算法思路代码实现 复写零题目链接题目描…

【11408学习记录】英语写作黄金模板+语法全解:用FTC数据泄漏案掌握书信结构与长难句拆解(附思维导图)

2025.04.04 英语写作书信写作第一段私人信件公务信函 语法总结——简单句简单句的核心&#xff1a;谓语动词的变化词性的拓展限定词 形容词与副词介词短语 成分的扩展同位语插入语 非谓语动词 每日一句词汇 第一步&#xff1a;辨别第二步&#xff1a;断开第三步&#xff1a;简化…

手机显示5GA图标的条件

最近有星友问在什么情况下才能显示5G-A&#xff1f;虽然这个我也不知道&#xff0c;但是我有几个运营商的5G终端白皮书&#xff0c;从上面就可以找到答案。 如上是几个运营商显示5G-A的条件&#xff0c;基本上考虑的都是3CC的情况&#xff0c;联通还有考虑200M CA 2CC的场景&am…

网络:华为数通HCIA学习:IP路由基础

华为HCIA学习 IP路由基础路由协议或路由种类以及对应路由的优先级按工作区域分类&#xff1a;按工作机制及算法分类&#xff1a;路由的优先级路由器选择最优路由的顺序是什么? 前言自治系统LAN和广播域路由选路IP路由表路由度量建立路由表最长匹配原则路由器转发数据包总结 IP…

Docker 镜像相关的基本操作

一、Docker 镜像基本操作 1. 查找镜像 命令&#xff1a; docker search <镜像名称> 示例&#xff1a;查找 CentOS 镜像&#xff1a; docker search centos 命令解释&#xff1a; 默认从 Docker Hub 官方仓库上搜索镜像。搜索结果包含多个列&#xff1a; NAME&…

Linux文件特殊权限管理及进程和线程

acl 权限优先级 拥有者 > 特殊指定用户 > 权限多的组 >权限少的组 > 其他 mask阈值 mask是能够赋予指定用户权限的最大阀值 当设定完毕文件的acl列表之后用chmod缩小了文件拥有组的权力 mask会发生变化 恢复&#xff1a; setfacl -m m: 权限 :rwx 文件/…

NVIDIA AgentIQ 详细介绍

NVIDIA AgentIQ 详细介绍 1. 引言 NVIDIA AgentIQ 是一个灵活的库&#xff0c;旨在将企业代理&#xff08;无论使用何种框架&#xff09;与各种数据源和工具无缝集成。通过将代理、工具和代理工作流视为简单的函数调用&#xff0c;AgentIQ 实现了真正的可组合性&#xff1a;一…

算法设计与分析5(动态规划)

动态规划的基本思想 将一个问题划分为多个不独立的子问题&#xff0c;这些子问题在求解过程中可能会有些数据进行了重复计算。我们可以把计算过的数据保存起来&#xff0c;当下次遇到同样的数据计算时&#xff0c;就可以查表直接得到答案&#xff0c;而不是再次计算 动态规划…

怎么理解量子比特模型,迁移到量子计算机开始编程

怎么理解量子比特模型&#xff0c;迁移到量子计算机开始编程 视频链接&#xff1a; 好的现在是2025年的3月最后一天,3月31号,今天我们讨论的话题是量子编程,也就是在量子计算机上,使用特定的语言进行软件开发。当然我们要讨论的,不是,量子编程的某一门语言的技术细节,而是考虑…