Coder Social home page Coder Social logo

ginowo / lux Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 44 KB

GUI MazeSolver written in C++ and Qt

License: The Unlicense

CMake 6.66% C++ 93.34%
college-assignment cpp gui lms maze-solver qt6 bfs-visualization dfs-visualization flood-fill-algorithm

lux's Introduction

LuX

LICENSE Language Qt GitHub csize Build Linux Build Windows

Description

LuX is a GUI application built with the Qt framework. It allows users to create and solve grids or mazes of their desired dimensions. The application provides an intuitive interface for creating, modifying, and solving mazes. It will find the shortest path to one of the the finish points from the start point.

Downloading

To use the pre-built binaries follow the steps below

Linux

Download LuX_Linux_x86_64.tar.gz from releases and extract the contents to a folder. Then run LuX-*.AppImage

Windows

Download LuX_Windows_x86_64.zip from releases and extract the contents to a folder. Then run Lux.exe

Building From Source

Prerequisites

To build LuX, you require the following on your system:

  • C++20 or above
  • Qt framework 6.5.0+
  • Qt Creator Community 10.0.0+
  • (Optional: Linux only) AppImage-Builder

Cloning

Open a command line in your desired folder, clone the repo with the following command

git clone https://github.com/GinOwO/LuX.git

Building

Windows

  1. Open Qt Creator and load the project.
  2. Switch to release and then build the project.
  3. Copy the release exe from the build folder to your desired folder.
  4. Open a command line in your bin folder in the Qt installation, ex: "D:\Qt\6.5.*\mingw_64\bin"
  5. Use the set PATH=<path_to_qt>;%PATH% to use the Qt DLLs, ex:set PATH=D:\Qt\Tools\mingw1120_64\bin;%PATH%
  6. Now run the windeployqt6 "<path_to_exe>" command to copy necessary DLLs to the exe folder, ex: windeployqt6 "D:\Lux\Lux.exe"

Linux

  1. Open Qt Creator and load the project.
  2. Switch to release and then build the project.
  3. Copy the release build from the build folder to your desired folder. Make the directory AppDir/usr/bin and copy the release build to it.
  4. Open a terminal in the folder and run appimage-builder --generate && appimage-builder to generate the AppImage.

Usage

  1. Launch Lux
  2. Choose LOAD to load a saved maze or enter a height and width and press START
  3. Left click on the grids to toggle walls.
  4. Right click to open the context menu to get options to toggle starting position and ending position. There can only be a single start but multiple finish points can exist.
  5. Go to solve and select the algorithm to solve it.

Note:

  • Menu->Save to save the current maze layout in a file. A layout can be created manually using a text editor.
  • Menu->Reload to reload a layout if it was loaded from a file.
  • Menu->Reset to get a blank canvas.
  • Minimum Height is 3x3. Recommended maximum height is 68x98, going above which might crash the program.
  • There is an example.txt file with a maze.
  • In the saved layout:
    • The first line is height and width separated by a white space
    • "W" represents walls, "S" represent the start point, "E" represents finish/end point, "." represents empty paths.

License

This project is licensed under The Unlicense.

lux's People

Contributors

ginowo avatar

Stargazers

 avatar

Watchers

 avatar

lux's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.