2025-11-03 05:27:57 +01:00
2025-11-03 05:20:15 +01:00
2025-11-03 05:04:47 +01:00
2025-11-03 05:27:57 +01:00
2025-10-30 15:18:41 +01:00
2025-10-31 17:24:43 +01:00
2025-10-31 17:51:34 +01:00
2025-10-31 06:06:46 +01:00
2025-11-03 05:18:59 +01:00
2025-10-16 09:30:56 +02:00
2025-10-16 09:30:56 +02:00

Pathfinding demo

This is a demo of pathfinding on a 2D grid. It consists of 2 main parts:

Python

Plots a path from one end of the map to the other. Black tiles represent low-cost path, white tiles have high-cost.

Python pathfinding demo

Standalone script

Run python pathfinding_demo.py. Requires numpy and matplotlib to be installed.

Jupyter notebook

Contains the same demo as the standalone script and some notes. Since Github supports Jupyter Notebooks now, you can go directly to the file.

C++

Interactive demo of entities moving on a simple map with terrains of varying cost. Draw left-mouse button over entities to select them, right-mouse button to send them to selected destination. Simple collision checks are implemented.

Uses some C++20 features. Latest generated architecture drawing is available in docs/diagrams/class_diagram.svg

C++ pathfinding demo

Windows

Dependencies

  • vcpkg needs to be installed and VCPKG_ROOT set. See the installation instructions.
  • Visual Studio with Desktop development with C++ workload (or MSVC Build Tools)

Build

Run "Developer Command Prompt for VS 20xx":

cmake --preset=vcpkg
cmake --build build

Run the pathfinding.exe binary in the build folder.

Linux

Dependencies

  • SDL3
  • SDL3-image
  • GLEW
  • gtest

e.g. on Archlinux:

pacman -S glew sdl3 sdl3_image gtest

Optional dependencies for generating class and include diagrams:

clang-uml needs to be either installed from AUR or built manually

Build

cmake -B build
cmake --build build -j 16

Optionally you can also use options:

  • -DCMAKE_EXPORT_COMPILE_COMMANDS=ON to enable compile database export (needed for class diagram generation)
  • -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ to use clang
cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=O  -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++

Run the pathfinding binary in the build folder.

Generate architecture diagrams

Build with -DCMAKE_EXPORT_COMPILE_COMMANDS=ON. Then in the root folder run:

clang-uml
plantuml -tsvg docs/diagrams/*.puml

The resulting svg files are located in docs/diagrams/.

Acknowledgments

Entity sprite comes from the Bomberman game, taken from archive.org

Description
Python and C++ implementation of selected pathfinding algorithms
Readme 1.1 MiB
Languages
C++ 58.4%
Jupyter Notebook 31.5%
Python 6.8%
CMake 3.2%
Shell 0.1%