# amazeing
Amazeing is a maze generator/solver application with simulation/visualization.



## Installation
Clone the repository and build the project:
```sh
git clone https://github.com/eendroroy/amazeing.git
cd amazeing
make install # this will install shell-completions
amzeing --help
```
### Key/Mouse events
- `Control`+`I` - Save current screen as png in current directory
- Create
- `G`/`<Space>` - (Re)Generate Maze
- Additional action in simulation mode (`--verbose`/`-v`):
- `LeftClick` - Add/Remove Source
- `Shift`+`LeftClick` - Set Destination
- `G`/`<Space>` - Start Simulation
- `<Space>` - Start/Pause/Resume Simulation
- `R` - Restart simulation and reset selection
- View - Update mode (`--update`/`-u`):
- `LeftClick` - Open path
- `Shift`+`LeftClick` - Block Path
- `Control`+`S` - Save current maze to the same file
- Solve
- `LeftClick` - Select Source
- `Shift`+`LeftClick` - Select Destination
- Additional action in simulation mode (`--verbose`/`-v`):
- `S`/`<Space>` - Start Simulation
- `<Space>` - Start/Pause/Resume Simulation
- `R` - Restart simulation and reset selection
## Generate Maze
| Dfs | Rectangle | Hexagon | [](https://www.youtube.com/watch?v=twafvSeVQOs) |
| Dfs (Multi Source) | Rectangle | Square | [](https://www.youtube.com/watch?v=fL93bHyf6-M) |
| Dfs | Rectangle | Square | [](https://www.youtube.com/watch?v=iyxUARc2T2g) |
| Bfs | Rectangle | Square | [](https://www.youtube.com/watch?v=st8RLTgAuuE) |
| Dfs | Triangle | Hexagon | [](https://www.youtube.com/watch?v=0c4s49G1RAk) |
| A* (Manhattan) | Circle | Hexagon | [](https://www.youtube.com/shorts/CZanPMEyYZE) |
## Solve Maze
| A* (Octile) | Rectangle | Hexagon | [](https://www.youtube.com/watch?v=MRt7X6JGDuo) |
| A* (Manhattan) | Rectangle | Square | [](https://www.youtube.com/watch?v=LkxyikxTX6Y) |
| DFS | Rectangle | Square | [](https://www.youtube.com/shorts/9F8XRL7lnIU) |
| BFS | Rectangle | Square | [](https://www.youtube.com/shorts/h8q5vi68fz0) |
## Others
[Color scheme generator](assets/scheme-generator.html)
## License
This project is licensed under the [GNU AGPL-3.0 License](https://www.gnu.org/licenses/agpl-3.0.html).
See the [LICENSE](./LICENSE) file for more details.