An educational and interactive maze-solving project built in Java using object-oriented programming, client-server architecture, and a JavaFX GUI (MVVM). Designed as part of an academic programming course, this project demonstrates advanced programming concepts in a modular and layered manner.
- Java 15+
- JavaFX (GUI)
- MVVM Architecture
- Multithreading (Java Threads)
- Client-Server Communication (Sockets, Object Streams)
- Custom Compression (via Output/Input Streams)
- JUnit 5 for Unit Testing
- Maven for Build Management
- Log4j2 for Logging
- Maze generation:
EmptyMazeGenerator,SimpleMazeGenerator,MyMazeGenerator - Search algorithms:
BreadthFirstSearch,DepthFirstSearch,BestFirstSearch - Abstractions:
IMazeGenerator,ISearchingAlgorithm,ISearchable
- Servers: Generate or solve mazes via sockets
- Compress/Decompress mazes to reduce file size (e.g. RLE logic)
- Save/load mazes and solutions
- Multithreaded server using Java
ExecutorService - Custom streams:
MyCompressorOutputStream,MyDecompressorInputStream
- Fully functional desktop app with a user-friendly interface
- MVVM separation (Model, ViewModel, View)
- Maze display, navigation, and animation
- Live player and goal position updates
- Menu system and interactive settings
Solve, play, and regenerate maze puzzles easily.
- JavaFX graphical interface
- MVVM (Model-View-ViewModel) architecture
- Maze display as a grid with graphical components
- Interactive player (character) that can move within the maze
- Goal (⭐) and walls (🧱) are visually rendered
- Animated transitions (optional)
Generate Maze– creates a new random mazeSolve Maze– triggers automatic solving using a search algorithmPlay Again– resets the player's position to the start
- Current Player Position (row, col)
- Goal Position (row, col)
- 🎵 Music volume control – adjustable via slider
- 🌙 Dark Mode toggle – checkbox to enable/disable dark mode
- ❌
Closebutton – closes the settings popup
New Game– start a new game with a freshly generated mazeSave Game– saves the current game state to fileLoad Game– loads a previously saved maze and player stateExit– closes the application safely
Settings– open settings popup for volume and themeMute– quickly disable soundChange Theme– toggle between Light/Dark modes (if implemented)
These features collectively demonstrate:
- GUI event handling
- UI state binding
- File I/O operations for serialization
- Smooth JavaFX integration using the MVVM pattern
src/
│
├── algorithms/
│ ├── mazeGenerators/
│ └── search/
├── IO/
├── Server/
├── Client/
├── GUI/
│ ├── View/
│ ├── ViewModel/
│ └── Model/
├── test/

