{"id":28578835,"url":"https://github.com/borisboguslavsky/pathpyinder","last_synced_at":"2025-10-26T01:32:59.946Z","repository":{"id":185418397,"uuid":"421983395","full_name":"borisboguslavsky/pathpyinder","owner":"borisboguslavsky","description":"An interactive maze-drawing \u0026 maze-solving application written in Python ","archived":false,"fork":false,"pushed_at":"2022-05-02T00:16:26.000Z","size":547,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-22T01:32:35.437Z","etag":null,"topics":["algorithm","algorithms","astar","bfs","dfs","drawing","gui","maze","maze-algorithms","maze-solver","pathfinding","pysimplegui","python","tkinter","visualization"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/borisboguslavsky.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-10-27T21:49:30.000Z","updated_at":"2023-09-02T19:57:17.000Z","dependencies_parsed_at":"2023-08-01T23:01:12.603Z","dependency_job_id":null,"html_url":"https://github.com/borisboguslavsky/pathpyinder","commit_stats":null,"previous_names":["borisboguslavsky/pathpyinder"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/borisboguslavsky/pathpyinder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/borisboguslavsky%2Fpathpyinder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/borisboguslavsky%2Fpathpyinder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/borisboguslavsky%2Fpathpyinder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/borisboguslavsky%2Fpathpyinder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/borisboguslavsky","download_url":"https://codeload.github.com/borisboguslavsky/pathpyinder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/borisboguslavsky%2Fpathpyinder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281047792,"owners_count":26435124,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-25T02:00:06.499Z","response_time":81,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithm","algorithms","astar","bfs","dfs","drawing","gui","maze","maze-algorithms","maze-solver","pathfinding","pysimplegui","python","tkinter","visualization"],"created_at":"2025-06-11T01:11:12.768Z","updated_at":"2025-10-26T01:32:59.930Z","avatar_url":"https://github.com/borisboguslavsky.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PathPyinder\n\n[![PathPyinder GUI](assets/pathpyinder_social_cover.png)](https://youtu.be/Eh_Byli2bmM)\n\nPathPyinder is an interactive pathfinding algorithm visualizer written in Python. Automatically generate mazes, draw your own custom mazes from scratch, or load pre-built mazes. Watch how three different pathfinding algorithms then solve the mazes you drew.\n\n## Requirements\n* **Python** - Version 3.6 or higher\n\n*Warning: there may be some GUI jank or bugs when using on MacOS.*\n\n\n## Usage\nNavigate to the PathPyinder/src directory via terminal and launch PathPyinder with: `python pathpyinder.py`. If you have a Python 2.X and a 3.X installation on your machine, you may need to use the command `python3 pathpyinder.py`.\n\n### **Drawing Mazes:**\nPathPyinder is interactive, so you can draw your own mazes. There are four types of maze nodes that can be drawn: \n* **Wall**: A node that cannot be traversed.\n* **Path**: A node that can be traversed.\n* **Start**: The node from which the algorithm will start solving.\n* **End**: The node that must be reached by the algorithm.\n\nSelect which node to draw by clicking the buttons in the *Draw* frame of the GUI, and clicking or dragging somewhere in the maze. You can clear out a maze using the **Clear Maze** button at the bottom left of the interface. You can also fill up the entire grid with wall nodes using *Tools \u003e Fill Maze*.\n\n### **Selecting an Algorithm:**\nUse the radio buttons in the 'Algorithm' frame to select which algorithm will be used to solve the maze. Available algorithms include:\n* [Breadth-First Search](https://en.wikipedia.org/wiki/Breadth-first_search#Applications)\n* [Depth-First Search](https://en.wikipedia.org/wiki/Depth-first_search)\n* [A* (A-Star)](https://en.wikipedia.org/wiki/A*_search_algorithm)\n\n### **Solving Mazes:**\nClick the **Solve** button in the *Controls* frame of the GUI to start solving the maze. Keep in mind, a start node and end node have to exist for PathPyinder to attempt solving. You can adjust the speed that the algorithm iterates by using the speed slider. You can also pause the algorithm entirely iterate through it one step at a time using the **Pause** and **Next** buttons under the **Solve** button.\n\n### **Resetting and Clearing Mazes:**\n* **Reset** button: stop solving, and reset the current maze to it's original, unsolved state.\n* **Clear** button: stop solving, and erase the entire maze to an empty grid.\n\n### **Saving and Loading Mazes:**\nSave and load mazes via *File \u003e Save Maze* and *File \u003e Open Maze* in the menu bar. Mazes are saved as .txt files. There is a `/mazes` directory that includes some pre-built mazes.\n\n### *Resizing the Maze:*\nMazes can be resized via *Settings \u003e Maze Dimensions*\n\n\n## Default Settings\nYou can change some options that PathPyinder initializes with via the *Settings \u003e Defaults* menu option. Options that can be changed are:\n* **Default Maze**: maze that's loaded on initialization.\n* **Algorithm**: which algorithm is selected by default.\n* **Speed**: how fast the algorithm moves through the maze.\n* **Maze Dimensions**: the maze grid size.\n\n\n## Acknowledgements\n* [**PySimpleGUI**](https://github.com/PySimpleGUI) - Big thanks for making Python GUIs more palatable.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fborisboguslavsky%2Fpathpyinder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fborisboguslavsky%2Fpathpyinder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fborisboguslavsky%2Fpathpyinder/lists"}