# MazeSolver **Repository Path**: lingerjab/MazeSolver ## Basic Information - **Project Name**: MazeSolver - **Description**: GUI Maze Solver for ASCII Maze in CTF - **Primary Language**: Kotlin - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-30 - **Last Updated**: 2025-07-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: Kotlin, Reverse-engineering, Maze, CTF, Jetpack-Compose ## README # Logo Maze Solver 一款基于 Compose for Desktop 的 GUI 字符迷宫求解器 --- > 主播由于在CTF Reverse/Misc中经常遇到迷宫题,~~本人算法很烂不会写BFS,~~ 于是一气之下写了个GUI自动化求解器 > > 刚好学了 Compose,没想到 Android 也能搬到 Desktop 上,于是就有了这个工具 --- ## 🗺️原理 1. 输入`ASCII`和`CharMapping`字符映射关系 2. 转到`Solver.parseMaze()`分析返回 3. `Compose`可视化 4. `OutputParser.parse..()`求解返回 5. 整理输出 > 以上封装功能均可直接从源码调用 ## ℹ️使用帮助 ### 输入 首先将在**输入**中按照指示,填入字符串迷宫,例如: > '#', 'S', '#', '#', '#', '#', '#', '#', '#', '#', > '#', '*', '*', '#', '#', '#', '#', '#', '#', '#', > '#', '#', '*', '#', '#', '#', '#', '#', '#', '#', > '#', '#', '*', '*', '#', '#', '#', '#', '#', '#', > '#', '#', '#', '*', '#', '#', '#', '#', '#', '#', > '#', '*', '*', '*', '#', '#', '#', 'E', '#', '#', > '#', '*', '#', '#', '#', '#', '#', '*', '#', '#', > '#', '*', '#', '#', '#', '#', '#', '*', '#', '#', > '#', '*', '*', '*', '*', '*', '*', '*', '#', '#', > '#', '#', '#', '#', '#', '#', '#', '#', '#', '#' - **Start** 为迷宫起始位置,**如 `S`** - **End** 为迷宫结束位置,**如 `E`** - **Wall** 为迷宫墙,**如 `#`** 必填 - **Empty** 为迷宫路,**如 `*`** 必填 - **Ignore** 用于忽略字符, 会过滤影响分析的字符 **如 `',`** ### 可视化 分析成功后会自动生成可视化网格,点击**编辑锁定**按钮即可解锁编辑 **解锁编辑**后可以编辑网格 - **左键**: 编辑`Wall`和`Empty`,分别为黑色和白色 - **右键**: 设置`Start`和`End`,分别为绿色和红色 - `Visited`: 求解后会生成路线,为黄色 ### 输出 求解后会自动生成输出 - **步骤**: 路线的步骤,如`D, R, D, D, R, D, D, L, L, D, D, D...` - **路径**: 路线的坐标,如`(0, 1) (1, 1) (1, 2) (2, 2) (3, 2)...` - **文本**: 迷宫字符化,如`1 S 1 1 1 1 1 1 1 1\n1 0 0 1 1 1 1...` - **代码**: 迷宫转代码,如`char grid[10][11] {"1S11111111", ...` 输出结果可以设置自定义字符,格式,语言等 ## ⬇️构建&下载 `exe`和`jar`下载请到 [Github Release](https://github.com/LingerJAB/MazeSolver/releases) 下载 手动部署请拉取项目`.git`,并在`build.gradle.kts`中,修改以下代码 ```kotlin compose.desktop { application { mainClass = "io.github.lingerjab.MazeSolverWindowKt" nativeDistributions { targetFormats(TargetFormat.AppImage, TargetFormat.Dmg) packageName = "Maze Solver" packageVersion = "1.0.0" includeAllModules = false windows { iconFile.set(project.file("src/main/resources/favicon.ico")) } } } } ``` 其中`TargetFormat.Dmg`即为Mac安装包,添加`TargetFormat.Msi(Deb)`同理 然后执行`gradle packageRelease`即可,构建后会在`./build/compose/`文件夹下 ## 🥺捐赠 给孩子换个大一点的内存条吧, 开发时IDEA都急得爆内存不足了 wxpay alipay