[TOC]
若在 .pdf 文件无法查看动图(.gif),可用 markdown 编辑器直接打开 readme.md。
Live Demo: https://enochii.github.io/Evil-Path-Finder/
PS: 部署完适配不太行,如果发现按钮有点问题,建议
Ctrl -
缩小页面 .......
本项目是一个寻路算法的可视化,同时支持用户自定义算法并上传演示(可试用algorithm
文件夹下的部分 *.js
如bfs.js
进行尝试 or code_editor_sample
文件夹)。
所以为什么叫 Evil-Path-Finder ???
因为支持用户自定义代码时用了 eval()
这个十分 evil 的不推荐使用的函数!通过 eval
求值得到用户自定义的 class ,这部分算是本项目一个很好玩的点吧~ 具体逻辑可以看代码 。
点击HOW TO PLAY?
可以呼出帮助界面(简单教程请看 How to Run 小节)
不同颜色的格子表示不同的格子类型:
- React
- scss
yarn install
yarn start
Demo: https://hangshuaibi.github.io/Evil-Path-Finder/
好像用 vpn 加载会快很多
- 选择地图生成算法(可选)
- 选择搜索算法
- 点击
GO!
开始搜索路径!- 如果告知无法找到路径,则重新照着教程操作,总有一次能运行~ : )
- 算法可视化帮助我们更好地理解算法。
- 自定义算法运行验证是否符合自己的想法。
支持多种算法参数的调节,包括:
- 迷宫大小
- 算法展示延迟
- 拖拽 Delay 滑动条
- 起点终点修改
- 拖拽起点和终点
- 是否允许对角线行走
- 默认只能往上下左右行走
- 点击空白格子可使其变成障碍
- 点击障碍格子可变成空白
调节 上方的Delay
滑动条可以调整算法展示的延迟,这样会有更好的可视化效果。
默认情况下,算法在寻找可行路径时,只能往上下左右四个方向前进。勾选如下按钮即可允许对角线行走,此时寻路算法可以往上下左右及四个对角线 8 个方向行走。
拖拽起点和终点可以改变起点和终点的位置。
当前支持三种地图算法的生成:
- Stair
- Horizontal
- Vertical
以下为算法的生成结果。
迷宫的障碍除了可以试用地图算法自动生成外,还可以通过点击格子使其由障碍和空白两种状态互相切换。
初始时会为用户提供五种算法:
- A Star
- DFS
- BFS
- Bell Ford
- Dijkstra
找到的路径是否视最短路径,视具体算法性质而定,除 dfs 外其他算法均可保证找到的路径是最短路径
除以上提供的算法外,用户还可以自定义算法,后面会重点介绍。
内嵌了 React-Ace
点击右侧的 CODE EDITOR
按钮可以呼出代码编辑器:
可以对代码进行编辑,会有简单的代码补全。点击 SUBMIT
按钮提交算法,该算法会被添加到主页的算法选择下拉框,此时用户可以选择其执行。
代码若存在一些简单的语法错误,提交代码后会提示用户:
- 你可以将 custom_editor_example 文件下的 .js 复制到编辑器中
- 或者使用 algorithm/ 文件夹下的 dfs.js / bfs.js / bell-ford.js / astar.js / dijkstra.js
PS:强烈建议不要手痒手写代码,最好参考以上的例子,因为 debug 体验挺差的。
点击 RESET
可以将重置代码,每次提交系统都会自动为用户保存代码。代码编辑器的最新版本会被持久化,刷新界面后仍可以修改、运行自定义算法。
自定义代码可以被用户删除,删除后需要刷新页面,算法会从下拉框中消失。
这里(故意)没有提供系统原始算法的删除,主要是考虑到用户误删导致重新恢复较为繁琐。
点击 GO!
按钮开始执行算法,开始运行算法后按钮会被 disabled :
可以点击暂停按钮暂停算法,暂停后可恢复执行、中断执行(通过清空地图、清空路径)等。
更多功能,请自行探索~