当前位置: 首页 > article >正文

扫雷-HTML

!DOCTYPE htmlhtml langzh-CNheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0title扫雷游戏/titlestyle* {margin: 0;padding: 0;box-sizing: border-box;}body {font-family: Segoe UI, Tahoma, Geneva, Verdana, sans-serif;background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);min-height: 100vh;display: flex;justify-content: center;align-items: center;padding: 20px;}.game-container {background: white;border-radius: 20px;padding: 30px;box-shadow: 0 20px 60px rgba(0,0,0,0.3);}h1 {text-align: center;color: #333;margin-bottom: 20px;font-size: 2.5em;}.controls {display: flex;justify-content: center;gap: 15px;margin-bottom: 20px;flex-wrap: wrap;}.controls select, .controls button {padding: 10px 20px;font-size: 16px;border: 2px solid #667eea;border-radius: 10px;cursor: pointer;background: white;transition: all 0.3s;}.controls button {background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);color: white;border: none;}.controls button:hover {transform: translateY(-2px);box-shadow: 0 5px 15px rgba(102, 126, 234, 0.4);}.status-bar {display: flex;justify-content: space-between;align-items: center;margin-bottom: 20px;padding: 15px;background: #f5f5f5;border-radius: 10px;}.status-item {font-size: 18px;color: #333;}.status-item span {font-weight: bold;color: #667eea;}.emoji-btn {font-size: 32px;cursor: pointer;background: none;border: none;transition: transform 0.2s;}.emoji-btn:hover {transform: scale(1.2);}.game-board {display: grid;gap: 2px;background: #bbada0;padding: 5px;border-radius: 10px;margin: 0 auto;width: fit-content;}.cell {width: 40px;height: 40px;display: flex;justify-content: center;align-items: center;font-size: 20px;font-weight: bold;cursor: pointer;border-radius: 5px;transition: all 0.1s;user-select: none;}.cell.hidden {background: linear-gradient(145deg, #c9c9c9, #d9d9d9);box-shadow: 2px 2px 5px rgba(0,0,0,0.1);}.cell.hidden:hover {background: linear-gradient(145deg, #d9d9d9, #e9e9e9);transform: scale(1.05);}.cell.revealed {background: #e0e0e0;cursor: default;}.cell.flagged {background: linear-gradient(145deg, #c9c9c9, #d9d9d9);}.cell.mine {background: #ff4444;}.cell.mine-revealed {background: #ff4444;animation: shake 0.5s;}keyframes shake {0%, 100% { transform: translateX(0); }25% { transform: translateX(-5px); }75% { transform: translateX(5px); }}.cell[data-number1] { color: #1976d2; }.cell[data-number2] { color: #388e3c; }.cell[data-number3] { color: #d32f2f; }.cell[data-number4] { color: #7b1fa2; }.cell[data-number5] { color: #ff8f00; }.cell[data-number6] { color: #0097a7; }.cell[data-number7] { color: #424242; }.cell[data-number8] { color: #9e9e9e; }.message {text-align: center;font-size: 24px;font-weight: bold;margin-top: 20px;min-height: 30px;}.message.win {color: #4caf50;}.message.lose {color: #f44336;}.instructions {margin-top: 20px;padding: 15px;background: #f0f0f0;border-radius: 10px;font-size: 14px;color: #666;}.instructions h3 {margin-bottom: 10px;color: #333;}.instructions ul {margin-left: 20px;}.instructions li {margin: 5px 0;}/style/headbodydiv classgame-containerh1 扫雷 /h1div classcontrolsselect iddifficultyoption valueeasy简单 (9×9, 10 雷)/optionoption valuemedium selected中等 (16×16, 40 雷)/optionoption valuehard困难 (30×16, 99 雷)/option/selectbutton onclickinitGame() 新游戏/button/divdiv classstatus-bardiv classstatus-item 地雷span idmine-count40/span/divbutton classemoji-btn idface-btn onclickinitGame()/buttondiv classstatus-item⏱️ 时间span idtimer0/span/div/divdiv classgame-board idgame-board/divdiv classmessage idmessage/divdiv classinstructionsh3 游戏规则/h3ulli左键点击揭开方块/lili右键点击标记/取消标记地雷/lili揭开数字表示周围 8 格的地雷数量/lili揭开所有非雷方块即可获胜/lili点到地雷就游戏结束/li/ul/div/divscriptconst difficulties {easy: { rows: 9, cols: 9, mines: 10 },medium: { rows: 16, cols: 16, mines: 40 },hard: { rows: 16, cols: 30, mines: 99 }};let currentDifficulty medium;let board [];let revealed [];let flagged [];let gameOver false;let timer 0;let timerInterval null;let firstClick true;function initGame() {const settings difficulties[currentDifficulty];board [];revealed [];flagged [];gameOver false;timer 0;firstClick true;if (timerInterval) {clearInterval(timerInterval);timerInterval null;}document.getElementById(timer).textContent 0;document.getElementById(mine-count).textContent settings.mines;document.getElementById(face-btn).textContent ;document.getElementById(message).textContent ;document.getElementById(message).className message;for (let i 0; i settings.rows; i) {board[i] [];revealed[i] [];flagged[i] [];for (let j 0; j settings.cols; j) {board[i][j] 0;revealed[i][j] false;flagged[i][j] false;}}renderBoard();}function placeMines(excludeRow, excludeCol) {const settings difficulties[currentDifficulty];let minesPlaced 0;while (minesPlaced settings.mines) {const row Math.floor(Math.random() * settings.rows);const col Math.floor(Math.random() * settings.cols);// 排除第一次点击的位置及其周围if (Math.abs(row - excludeRow) 1 Math.abs(col - excludeCol) 1) {continue;}if (board[row][col] 0) {board[row][col] -1; // -1 表示地雷minesPlaced;}}// 计算每个格子周围的地雷数for (let i 0; i settings.rows; i) {for (let j 0; j settings.cols; j) {if (board[i][j] ! -1) {board[i][j] countAdjacentMines(i, j);}}}}function countAdjacentMines(row, col) {const settings difficulties[currentDifficulty];let count 0;for (let i -1; i 1; i) {for (let j -1; j 1; j) {const newRow row i;const newCol col j;if (newRow 0 newRow settings.rows newCol 0 newCol settings.cols) {if (board[newRow][newCol] -1) {count;}}}}return count;}function revealCell(row, col) {const settings difficulties[currentDifficulty];if (gameOver || revealed[row][col] || flagged[row][col]) {return;}// 第一次点击时放置地雷if (firstClick) {firstClick false;placeMines(row, col);startTimer();}revealed[row][col] true;const cell document.querySelector([data-row${row}][data-col${col}]);if (board[row][col] -1) {// 点到地雷游戏结束gameOver true;cell.classList.remove(hidden);cell.classList.add(mine-revealed);cell.textContent ;document.getElementById(face-btn).textContent ;document.getElementById(message).textContent 游戏结束你踩到地雷了;document.getElementById(message).className message lose;revealAllMines();stopTimer();return;}cell.classList.remove(hidden);cell.classList.add(revealed);if (board[row][col] 0) {cell.textContent board[row][col];cell.setAttribute(data-number, board[row][col]);} else {// 空格子递归揭开周围格子for (let i -1; i 1; i) {for (let j -1; j 1; j) {const newRow row i;const newCol col j;if (newRow 0 newRow settings.rows newCol 0 newCol settings.cols) {revealCell(newRow, newCol);}}}}checkWin();}function toggleFlag(row, col) {if (gameOver || revealed[row][col]) {return;}const settings difficulties[currentDifficulty];const cell document.querySelector([data-row${row}][data-col${col}]);if (flagged[row][col]) {flagged[row][col] false;cell.classList.remove(flagged);cell.textContent ;document.getElementById(mine-count).textContent parseInt(document.getElementById(mine-count).textContent) 1;} else {flagged[row][col] true;cell.classList.add(flagged);cell.textContent ;document.getElementById(mine-count).textContent parseInt(document.getElementById(mine-count).textContent) - 1;}}function revealAllMines() {const settings difficulties[currentDifficulty];for (let i 0; i settings.rows; i) {for (let j 0; j settings.cols; j) {if (board[i][j] -1) {const cell document.querySelector([data-row${i}][data-col${j}]);cell.classList.remove(hidden);if (flagged[i][j]) {cell.classList.add(revealed);} else {cell.classList.add(mine-revealed);}cell.textContent ;}}}}function checkWin() {const settings difficulties[currentDifficulty];let unrevealedSafeCells 0;for (let i 0; i settings.rows; i) {for (let j 0; j settings.cols; j) {if (!revealed[i][j] board[i][j] ! -1) {unrevealedSafeCells;}}}if (unrevealedSafeCells 0) {gameOver true;document.getElementById(face-btn).textContent ;document.getElementById(message).textContent 恭喜你赢了;document.getElementById(message).className message win;stopTimer();}}function startTimer() {timerInterval setInterval(() {timer;document.getElementById(timer).textContent timer;}, 1000);}function stopTimer() {if (timerInterval) {clearInterval(timerInterval);timerInterval null;}}function renderBoard() {const settings difficulties[currentDifficulty];const gameBoard document.getElementById(game-board);gameBoard.innerHTML ;gameBoard.style.gridTemplateColumns repeat(${settings.cols}, 40px);for (let i 0; i settings.rows; i) {for (let j 0; j settings.cols; j) {const cell document.createElement(div);cell.className cell hidden;cell.dataset.row i;cell.dataset.col j;cell.addEventListener(click, () revealCell(i, j));cell.addEventListener(contextmenu, (e) {e.preventDefault();toggleFlag(i, j);});gameBoard.appendChild(cell);}}}document.getElementById(difficulty).addEventListener(change, (e) {currentDifficulty e.target.value;initGame();});// 初始化游戏initGame();/script/body/html

相关文章:

扫雷-HTML

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>扫雷游戏</title><style>* {margin:…...

人形机器人手指关节选材:铝合金 vs PEEK,谁才是轻量化的终极方案?

在人形机器人研发中&#xff0c;末端执行器&#xff08;手部&#xff09;的性能直接决定了机器人的交互上限。而在手指关节这种“空间极度受限、重量极度敏感、运动频率极高”的部位&#xff0c;选铝合金还是 PEEK&#xff08;聚醚醚酮&#xff09;&#xff0c;本质上是在“结构…...

OpenModScan:工业总线测试与协议调试的开源解决方案

OpenModScan&#xff1a;工业总线测试与协议调试的开源解决方案 【免费下载链接】OpenModScan Open ModScan is a Free Modbus Master (Client) Utility 项目地址: https://gitcode.com/gh_mirrors/op/OpenModScan 在工业自动化领域&#xff0c;设备间的通讯可靠性直接决…...

TouchGal终极指南:3步打造你的专属Galgame社区家园

TouchGal终极指南&#xff1a;3步打造你的专属Galgame社区家园 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next TouchGal是一个专为Ga…...

PowerToys中文汉化版:微软官方增强工具箱的终极本地化体验

PowerToys中文汉化版&#xff1a;微软官方增强工具箱的终极本地化体验 【免费下载链接】PowerToys-CN PowerToys Simplified Chinese Translation 微软增强工具箱 自制汉化 项目地址: https://gitcode.com/gh_mirrors/po/PowerToys-CN PowerToys中文汉化版是微软官方系统…...

云服务器部署大模型

云服务器部署大模型1. 服务器配置2. 大模型下载3. 部署大模型1. 服务器配置 2. 大模型下载 千问2.5-14B-Instruct https://modelscope.cn/models/Qwen/Qwen2.5-14B-Instruct pip install modelscopemodelscope download --model Qwen/Qwen2.5-14B-Instruct --local_dir /root…...

基于单片机的自行车里程表设计|附源码

基于单片机的自行车里程表设计 源码&#xff1a;点击下载源码 项目简介 这是一个基于51单片机的自行车里程表设计项目&#xff0c;能够实时显示自行车的行驶速度、累计里程&#xff0c;并提供时间显示、超速报警等功能。该项目适合作为单片机课程设计的学习案例&#xff0c;…...

Nano-Banana入门指南:理解Knolling平铺与Exploded View差异及适用场景

Nano-Banana入门指南&#xff1a;理解Knolling平铺与Exploded View差异及适用场景 你是不是经常在网上看到那些把产品零件整整齐齐铺开、或者像爆炸一样散开的酷炫图片&#xff1f;这些图片在电商展示、产品说明书或者技术教程里特别常见&#xff0c;能让人一眼就看清楚产品的…...

OpenCV需要的Numpy知识

图像 NumPy 数组彩色图&#xff1a;(高度, 宽度, 3)灰度图&#xff1a;(高度, 宽度)像素值&#xff1a;0~255&#xff0c;类型 uint8下面所有内容&#xff0c;都围绕这句话。1. 创建数组1.1 np.array () —— 把列表变成数组import numpy as np ​ a np.array([1, 2, 3]) b …...

盘点 | 2026顶会顶刊机器人触觉:聚焦五条技术主线

2026年顶会顶刊释放的五大「触觉」关键信号 ——从静态识别到动态闭环 目录 01 元学习赋能机器人触觉识别&#xff0c;精度与泛化性俱佳 ICRA2026 | Tactile Recognition of Both Shapes and Materials with Automatic Feature Optimization-Enabled Meta Learning 研究方…...

从零实现 Llama 3:架构拆解与实现细节

本文参考以下英文教程撰写&#xff1a;https://pub.towardsai.net/build-your-own-llama-3-architecture-from-scratch-using-pytorch-2ce1ecaa901c 第一次看到有人把 Llama 3 从零实现一遍&#xff0c;我就知道这件事值得认真做一次。因为只有真正写出来&#xff0c;才能体会…...

大麦网抢票自动化:从技术原理到实战落地的全方位指南

大麦网抢票自动化&#xff1a;从技术原理到实战落地的全方位指南 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 问题引入&#xff1a;抢票困境与技术破局 在热门演出票务竞争日益激烈的当下&am…...

突破视频下载壁垒:yt-dlp-gui的全场景应用指南

突破视频下载壁垒&#xff1a;yt-dlp-gui的全场景应用指南 【免费下载链接】yt-dlp-gui Windows GUI for yt-dlp 项目地址: https://gitcode.com/gh_mirrors/yt/yt-dlp-gui 在数字化时代&#xff0c;视频内容已成为信息传递与知识获取的重要载体。然而&#xff0c;多数平…...

解锁浏览器超能力:Greasy Fork用户脚本平台完全指南

解锁浏览器超能力&#xff1a;Greasy Fork用户脚本平台完全指南 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork 认知启蒙&#xff1a;重新认识浏览器脚本的价值 还在为浏览器功能不足烦恼…...

亲测实用!6款覆盖全职业阶段的专业简历模板平台合集

很多人找工作的时候&#xff0c;都会卡在简历制作这一步。大家想要做出专业的简历&#xff0c;需要靠谱的专业简历模板平台&#xff0c;需要能直接参考的全行业简历案例&#xff0c;还需要能通过企业筛选的ATS适配简历模板。我整理了6款亲测好用的简历模板平台&#xff0c;国内…...

Stable Yogi Leather-Dress-Collection与智能车结合:生成个性化汽车内饰皮革方案

Stable Yogi Leather-Dress-Collection与智能车结合&#xff1a;生成个性化汽车内饰皮革方案 想象一下&#xff0c;你正坐在一辆智能车的展厅里&#xff0c;面前的巨大屏幕不是用来播放宣传片的&#xff0c;而是一个属于你的“数字裁缝铺”。你用手指轻轻滑动&#xff0c;选择…...

AI for Science新引擎:一文读懂符号计算的核心原理与实战指南

AI for Science新引擎&#xff1a;一文读懂符号计算的核心原理与实战指南 引言 在人工智能&#xff08;AI&#xff09;与科学研究&#xff08;Science&#xff09;深度融合的浪潮中&#xff0c;符号计算正从幕后走向台前&#xff0c;成为解决科学发现、工程优化等复杂问题的关…...

Phi-3-mini-128k-instruct处理复杂数据结构:算法题解答与优化展示

Phi-3-mini-128k-instruct处理复杂数据结构&#xff1a;算法题解答与优化展示 最近在尝试用一些轻量级的模型来辅助解决编程问题&#xff0c;特别是算法和数据结构这块。很多人觉得大模型只能写写简单的脚本&#xff0c;处理复杂逻辑可能不太行。正好手头有Phi-3-mini-128k-in…...

AI for Science新范式:当深度学习“求解”偏微分方程

AI for Science新范式&#xff1a;当深度学习“求解”偏微分方程 引言 在科学与工程的心脏地带&#xff0c;偏微分方程&#xff08;PDE&#xff09;如同描述万物规律的密码。从流体的舞蹈到宇宙的演化&#xff0c;传统数值方法&#xff08;如有限元、有限体积法&#xff09;虽…...

OpenClaw内存优化:千问3.5-35B-A3B-FP8在8GB设备的运行技巧

OpenClaw内存优化&#xff1a;千问3.5-35B-A3B-FP8在8GB设备的运行技巧 1. 为什么需要内存优化 当我第一次尝试在8GB内存的MacBook Pro上运行千问3.5-35B-A3B-FP8模型时&#xff0c;系统几乎立即崩溃了。这让我意识到&#xff0c;想要在资源有限的设备上运行大型语言模型&…...

实践之漏洞挖掘(弱口令)

前言&#xff1a;经过我的不懈努力&#xff0c;也是挖到了弱口令&#xff0c;嘻嘻&#xff0c;学校的&#xff0c;虽然没有泄露什么隐私&#xff0c;但是我交了要更新就是学校的漏洞&#xff0c;过不过都没关系&#xff0c;没过我下次就找有隐私的后台再交嘻嘻正题&#xff1a;…...

资源嗅探革新性工具:猫抓让网页资源获取变得前所未有的简单

资源嗅探革新性工具&#xff1a;猫抓让网页资源获取变得前所未有的简单 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过想要保存网…...

JiYuTrainer:重构教学控制逻辑的突破型技术方案

JiYuTrainer&#xff1a;重构教学控制逻辑的突破型技术方案 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 构建多维度控制体系 &#x1f4a1; 技术要点&#xff1a;通过内核级驱…...

降低OpenClaw Token消耗的三大实战策略,省钱后随便花,再也不用担心不够了

让AI“跑得更快、花得更少”&#xff1a;OpenClaw降本增效的终极实战手册 想象一下&#xff0c;你雇佣了一位才华横溢、但收费高昂的顶尖顾问。每次咨询&#xff0c;你都不厌其烦地把过去一整年的会议记录、所有项目文档、甚至茶水间的闲聊纪要都一股脑儿塞给他&#xff0c;然…...

Label Studio ML Backend架构设计与高可用机器学习服务实现深度解析

Label Studio ML Backend架构设计与高可用机器学习服务实现深度解析 【免费下载链接】label-studio-ml-backend Configs and boilerplates for Label Studios Machine Learning backend 项目地址: https://gitcode.com/gh_mirrors/la/label-studio-ml-backend Label Stu…...

告别学术阅读障碍:重新定义PDF翻译体验

告别学术阅读障碍&#xff1a;重新定义PDF翻译体验 【免费下载链接】PDFMathTranslate PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译&#xff0c;支持 Google/DeepL/Ollama/OpenAI 等服务&#xff0c;提供 CLI/GUI…...

从理论到模型:HFSS仿真平面发夹滤波器的关键步骤与参数优化

1. HFSS仿真前的理论准备 在开始HFSS仿真之前&#xff0c;我们需要先完成一些理论计算工作。这就像盖房子要先画图纸一样&#xff0c;没有理论指导的仿真就像无头苍蝇。我刚开始做滤波器设计时就犯过这个错误&#xff0c;直接上手建模&#xff0c;结果调参调到怀疑人生。 平面发…...

LongCat-Image-Editn V2效果展示:看AI如何精准将图中的猫变成狗

LongCat-Image-Editn V2效果展示&#xff1a;看AI如何精准将图中的猫变成狗 1. 效果惊艳开场&#xff1a;当AI成为你的修图助手 想象一下这样的场景&#xff1a;你拍了一张完美的照片&#xff0c;构图、光线、背景都无可挑剔&#xff0c;唯一的遗憾是照片里的主角——你的猫咪…...

PyTorch 2.8深度学习镜像实战教程:RTX 4090D + CUDA 12.4一键部署指南

PyTorch 2.8深度学习镜像实战教程&#xff1a;RTX 4090D CUDA 12.4一键部署指南 1. 镜像概述与环境准备 1.1 为什么选择这个镜像 如果你正在寻找一个开箱即用的深度学习环境&#xff0c;这个基于RTX 4090D 24GB显卡和CUDA 12.4优化的PyTorch 2.8镜像可能是理想选择。它专为…...

QPdf:Qt生态下的PDF渲染技术深度解析与现代应用实践

QPdf&#xff1a;Qt生态下的PDF渲染技术深度解析与现代应用实践 【免费下载链接】qpdf PDF viewer widget for Qt 项目地址: https://gitcode.com/gh_mirrors/qpd/qpdf 在Qt应用开发中&#xff0c;PDF文档处理一直是个技术痛点。传统方案要么依赖平台原生组件导致跨平台…...