全国最大装修网站排名/小红书推广引流

全国最大装修网站排名,小红书推广引流,企业邮箱地址,购买手表的网站源码在效果图后面 可标记 障碍 起始点 终点 点击寻路按钮后&#xff0c;表格上会自动出现一条蓝色最佳路径&#xff08;加了一格一格显示的动画&#xff09; 以下是效果图 橙色起点 绿色终点 红色障碍物 以下是寻路结果 源代码 <!DOCTYPE html> <html lang&quo…

源码在效果图后面 

可标记 障碍 起始点 终点 

点击寻路按钮后,表格上会自动出现一条蓝色最佳路径(加了一格一格显示的动画)

以下是效果图  橙色起点 绿色终点 红色障碍物

6b1d74120387425290903666de0e3a66.png

 以下是寻路结果

583ce5caaed04353865f6f53cdf9cc9f.png 源代码

<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=0.9"><title>广度优先搜索算法</title><style>body {display: flex;flex-direction: column;align-items: center;justify-content: center;height: 100vh;margin: 0;background-color: #f0f0f0;}#grid {display: grid;grid-template-columns: repeat(8, 50px);grid-template-rows: repeat(8, 50px);gap: 1px;background-color: gray;}.cell {width: 50px;height: 50px;background-color: white;border: 1px solid #ccc;cursor: pointer;}.cell.obstacle {background-color: red;}.cell.start {background-color: orange;}.cell.end {background-color: green;}.cell.visited {background-color: lightpurple;}.cell.path {background-color: blue;}#buttons {margin: 20px 0;}button {padding: 10px 15px;margin: 0 5px;border: none;border-radius: 5px;box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);cursor: pointer;transition: background-color 0.3s;}button:hover {background-color: #ddd;}#markObstacle {background-color: red;color: white;}#reset {background-color: green;color: white;}#markStart {background-color: orange;color: white;}#markEnd {background-color: blue;color: white;}#startSearch {background-color: purple;color: white;}</style>
</head><body><div id="grid"></div><div id="buttons"><button id="markObstacle">标记障碍物</button><button id="reset">重置</button><button id="markStart">标记起点</button><button id="markEnd">标记终点</button><button id="startSearch">开始寻路</button></div><script>const OBSTACLE = 1;const START = 2;const END = 3;const VISITED = 4;const PATH = 5;let grid = Array.from({ length: 8 }, () => Array(8).fill(0));let startCell = null;let endCell = null;const gridElement = document.getElementById('grid');// 创建格子for (let i = 0; i < 8; i++) {for (let j = 0; j < 8; j++) {const cell = document.createElement('div');cell.classList.add('cell');cell.dataset.row = i;cell.dataset.col = j;cell.addEventListener('click', () => handleCellClick(i, j));gridElement.appendChild(cell);}}function handleCellClick(row, col) {const cell = gridElement.children[row * 8 + col];if (cell.classList.contains('obstacle')) {cell.classList.remove('obstacle');grid[row][col] = 0;} else if (cell.classList.contains('start')) {alert('起点已存在,请先重置或选择其他格子');} else if (cell.classList.contains('end')) {alert('终点已存在,请先重置或选择其他格子');} else if (cell.classList.contains('visited') || cell.classList.contains('path')) {alert('此格子已被访问或是路径');} else {if (markingMode === 'obstacle') {cell.classList.add('obstacle');grid[row][col] = OBSTACLE;} else if (markingMode === 'start') {if (startCell) {grid[startCell.row][startCell.col] = 0;gridElement.children[startCell.row * 8 + startCell.col].classList.remove('start');}cell.classList.add('start');grid[row][col] = START;startCell = { row, col };} else if (markingMode === 'end') {if (endCell) {grid[endCell.row][endCell.col] = 0;gridElement.children[endCell.row * 8 + endCell.col].classList.remove('end');}cell.classList.add('end');grid[row][col] = END;endCell = { row, col };}}}let markingMode = '';document.getElementById('markObstacle').onclick = () => markingMode = 'obstacle';document.getElementById('markStart').onclick = () => markingMode = 'start';document.getElementById('markEnd').onclick = () => markingMode = 'end';document.getElementById('reset').onclick = resetGrid;document.getElementById('startSearch').onclick = startSearch;function resetGrid() {grid = Array.from({ length: 8 }, () => Array(8).fill(0));startCell = null;endCell = null;Array.from(gridElement.children).forEach(cell => {cell.className = 'cell';});}function startSearch() {if (!startCell || !endCell) {alert('请标记起点和终点');return;}const queue = [startCell];const visited = new Set();visited.add(`${startCell.row},${startCell.col}`);const parentMap = {};while (queue.length > 0) {const current = queue.shift();const { row, col } = current;if (row === endCell.row && col === endCell.col) {reconstructPath(parentMap, current);return;}for (const [dx, dy] of [[-1, 0], [1, 0], [0, -1], [0, 1]]) {const newRow = row + dx;const newCol = col + dy;if (newRow >= 0 && newRow < 8 && newCol >= 0 && newCol < 8 &&grid[newRow][newCol] !== OBSTACLE && !visited.has(`${newRow},${newCol}`)) {queue.push({ row: newRow, col: newCol });visited.add(`${newRow},${newCol}`);parentMap[`${newRow},${newCol}`] = current;gridElement.children[newRow * 8 + newCol].classList.add('visited');}}}alert('未找到路径');}function reconstructPath(parentMap, end) {let current = end;const path = [];while (current) {path.push(current);current = parentMap[`${current.row},${current.col}`];}// 反转路径数组path.reverse();// 逐个显示路径path.forEach((cell, index) => {setTimeout(() => {const { row, col } = cell;gridElement.children[row * 8 + col].classList.add('path');}, index * 100); // 每个格子延迟100毫秒});}</script>
</body></html>

 

 

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

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

相关文章

html+css前端作业 王者荣耀官网6个页面无js

htmlcss前端作业 王者荣耀官网6个页面无js 下载地址 https://download.csdn.net/download/qq_42431718/89571150 目录1 目录2 项目视频 王者荣耀6个页面&#xff08;无js&#xff09; 页面1 页面2 页面3 页面4 页面5 页面6

Camtasia2024官方下载安装激活教程+免费永久许可证秘钥激活码

在这个数字化内容层出不穷的时代&#xff0c;视频的力量日益凸显。无论是用于教育教学、企业培训、内容创作&#xff0c;还是记录生活中的精彩瞬间&#xff0c;一款强大且易用的视频编辑软件都至关重要。今天&#xff0c;让我们一同走进 Camtasia 2024 的精彩世界&#xff0c;探…

分类模型-逻辑回归和Fisher线性判别分析★★★★

该博客为个人学习清风建模的学习笔记&#xff0c;部分课程可以在B站&#xff1a;【强烈推荐】清风&#xff1a;数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilibili 目录 1理论 1.1逻辑回归模型 1.2线性概率模型 1.3线性判别分析 1.4两点分布…

github的Codespaces是什么

目录 github的Codespaces是什么 一、定义与功能 二、特点与优势 三、工作原理 四、使用场景与限制 github的Codespaces是什么 GitHub的Codespaces是一个基于云的即时开发环境,它利用容器技术为开发者提供一个完全配置好的开发环境,以便他们能够直接在浏览器或通过Visua…

轻松上手微调大语言模型——QLORA篇

轻松上手微调大语言模型——QLORA篇 前言 本篇Blog是代码实战篇&#xff0c;着重于新手如何在消费级GPU上快速跑通代码&#xff0c;打造属于自己的AI大语言模型。涉及到相关技术的具体原理我会在以后的更新中一一讲解。 在本篇中我对llama-2进行微调作为示例。 先决条件 安…

【成功率极高】消逝的光芒1联机显示加入的游戏不可用完美解决办法

今天和朋友联机玩消逝的光芒1&#xff0c;但是总是联机有问题&#xff0c;总是莫名其妙连上又退出去。而且退出去一次之后就进不来了&#xff0c;网上查了下&#xff0c;大概有三种方法&#xff0c;我全都试了下。 发现只有一种办法有用&#xff0c;那就是不连加速器。 没错&…

【你也能从零基础学会网站开发】 SQL结构化查询语言应用基础--创建表约束(table Constraints) 之 PRIMARY KEY 主键约束

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 什么是SQL数据…

《“微软蓝屏”敲响警钟:网络安全与系统稳定何去何从》

#“微软蓝屏”事件暴露了网络安全哪些问题&#xff1f;# 近日&#xff0c;一场由微软视窗系统软件更新所引发的全球性“微软蓝屏”事件&#xff0c;犹如一场突如其来的风暴&#xff0c;以雷霆万钧之势席卷了整个科技领域。这一事件宛如一颗投入平静湖面的巨石&#xff0c;瞬间激…

centos系统mysql数据库压缩备份与恢复

文章目录 压缩备份一、安装 xtrabackup二、数据库中创建一些数据三、进行压缩备份四、模拟数据丢失&#xff0c;删库五、解压缩六、数据恢复 压缩备份 一、安装 xtrabackup 确保已经安装了 xtrabackup 工具。可以从 Percona 的官方网站 获取并安装适合你系统的版本。 # 添加…

Study--Oracle-07-ASM相关参数(三)

一、ASM初始化参数 1、ASM全量参数&#xff0c;见附件 2、ASM重要参数 3、ASM权限 ASM的三大系统权限包括SYSDBA、‌SYSOPER和SYSASM。‌ SYSDBA&#xff08;‌系统管理员&#xff09;‌&#xff1a;‌这是最高级别的权限&#xff0c;‌允许用户执行所有的数据库管理任务&a…

Windows 11 家庭中文版 安装 VMWare 报 安装程序检测到主机启用了Hyper-V或Device

1、问题 我的操作系统信息如下&#xff1a; 我在安装 VMWare 的时候&#xff0c;报&#xff1a; 因为我之前安装了 docker 桌面版&#xff0c;所以才报这个提示。 安装程序检测到主机启用了 Hyper-v或 Device/credential Guard。要在启用了Hyper-或 Device/Credential Guard …

系统架构师考点--设计模式

大家好。今天来总结一下设计模式的相关考点。这部分考点也有可能在论文中出现&#xff0c;这里总结的可能不够全面&#xff0c;大家自己可以翻一下教材好好了解一下。 架构模式&#xff1a;软件设计中的高层决策&#xff0c;例如C/S结构就属于架构模式&#xff0c;架构模式反…

[k8s源码]9.workqueue

client-go 是一个库&#xff0c;提供了与 Kubernetes API 服务器交互的基础设施。它提供了诸如 Informer、Lister、ClientSet 等工具&#xff0c;用于监听、缓存和操作 Kubernetes 资源。而自定义控制器则利用这些工具来实现特定的业务逻辑和自动化任务。业务逻辑实现&#xff…

【ROS2】演示:为有损网络使用服务质量设置

目录 背景 先决条件 运行演示 命令行选项 添加网络流量 背景 请阅读有关 QoS 设置的文档页面&#xff0c;以获取有关 ROS 2 中可用支持的背景信息。 在这个演示中&#xff0c;我们将生成一个发布相机图像的节点和另一个订阅图像并在屏幕上显示图像的节点。然后&#xff0c;我们…

Fedora40安装telnet-server启用telnet服务

Fedora40安装telnet-server启用telnet服务 安装 telnet-server sudo yum install telnet-server或 sudo dnf install telnet-server启用服务 fedora40 或 CentosStream9 不能用 yum或dnf安装xinetd, telnet-server 的服务名为: telnet.socket 启用 telnet.socket.service …

三、基础语法2(30小时精通C++和外挂实战)

三、基础语法2&#xff08;30小时精通C和外挂实战&#xff09; B-02内联函数B-04内联函数与宏B-05_constB-06引用B-07引用的本质B-08-汇编1-X86-X64汇编B-09-汇编2-内联汇编B-10-汇编3-MOV指令C-02-汇编5-其他常见指令C-05-汇编8-反汇编分析C-07-const引用、特点 B-02内联函数 …

TreeSelect增加可筛选功能

TreeSelect官方可筛选示例 <template><el-tree-selectv-model"value":data"data"filterablestyle"width: 240px"/><el-divider /><el-divider />filter node method:<el-tree-selectv-model"value":data&q…

数据安全传输--加密算法

目录 古典加密算法与近代加密算法对比 算法分类 对称加密 常见的对称加密算法 在对称加密算法中密钥共享是一个很麻烦的问题 非对称加密 非对称加密过程 常见非对称加密算法 对称加密和非对称加密两者对比结论 DH算法 身份认证和数据认证技术 hash算法 hash算法特点…

PySide(PyQt),自定义图标按钮

1、在Qt Designer中新建画面&#xff0c;并放置3个按钮&#xff08;QPushButton&#xff09;和一个分组框&#xff08;QGroupBox&#xff09;小部件&#xff0c;分别命名为btn_1&#xff0c; btn_2&#xff0c;btn_3和btnStation。 2、将所有小部件的显示文字内容删除。 3、将…

论文复现:Predictive Control of Networked Multiagent Systems via Cloud Computing

Predictive Control of Networked Multiagent Systems via Cloud Computing论文复现 文章目录 Predictive Control of Networked Multiagent Systems via Cloud Computing论文复现论文摘要系统参数初始化系统模型观测器预测过程控制器设计系统的整体框图仿真结果 论文摘要 翻译…