2 unstable releases
new 0.2.0 | Apr 12, 2025 |
---|---|
0.1.0 | Mar 31, 2025 |
#157 in Games
238 downloads per month
17KB
275 lines
Maze Game Library
A simple Rust library for creating and playing text-based maze games. The maze is procedurally generated, and the player must find their way from the entrance to the exit.
Features
- Randomly generated mazes
- Simple text-based UI
- Keyboard controls for character movement
- Can be used as a library or standalone game
- Customizable maze dimensions
Installation
Add this to your Cargo.toml
:
[dependencies]
maze_game = "0.1.0"
Usage as a Library
use maze_game::maze::Maze;
fn main() {
// Create a new maze with default size (17x11)
let mut maze = match Maze::new() {
Some(m) => m,
None => {
println!("Failed to generate the maze.");
return;
}
};
// Or create a maze with custom size (width, height)
let mut custom_maze = match Maze::with_size(25, 15) {
Some(m) => m,
None => {
println!("Failed to generate the maze.");
return;
}
};
// Display the maze
println!("{}", maze.get_maze_as_string());
// Try to move the player, Move right
let moved = maze.move_player("d");
// Check if the game is completed
let state = maze.get_state();
if state.is_completed {
println!("Congratulations! You've reached the goal!");
}
}
Playing the Game
Execute the following command to run the standalone game with default size (17x11):
cargo run
To specify custom maze dimensions:
cargo run -- 25 15
Where 25 is the width and 15 is the height.
Controls
w
or up: Move ups
or down: Move downa
or left: Move leftd
or right: Move rightq
: Quit the game
Project Structure
lib.rs
: Public module exportsmain.rs
: Standalone game loop and user input handlingmaze.rs
: Maze data structure and operationsgenerator.rs
: Maze generation algorithmsposition.rs
: Position structure
License
This project is licensed under the MIT License - see the LICENSE file for details.
Dependencies
~405KB