Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shenmian/sokoban-rs
A sokoban with solver.
https://github.com/shenmian/sokoban-rs
bevy bevy-game game sokoban sokoban-solver
Last synced: 3 days ago
JSON representation
A sokoban with solver.
- Host: GitHub
- URL: https://github.com/shenmian/sokoban-rs
- Owner: ShenMian
- License: apache-2.0
- Created: 2023-12-23T11:11:33.000Z (almost 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-06T14:24:43.000Z (16 days ago)
- Last Synced: 2024-12-13T20:52:26.423Z (9 days ago)
- Topics: bevy, bevy-game, game, sokoban, sokoban-solver
- Language: Rust
- Homepage:
- Size: 20.6 MB
- Stars: 65
- Watchers: 3
- Forks: 8
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# sokoban-rs
A sokoban with solver.
## Features
- **Solver**: The solver can automatically solve simple levels. [More details](docs/solver.md).
- **Auto move**: Supports full mouse control for automatic player movement and box pushing. [More details](docs/auto_move.md).
- **Level management**: Levels and solutions are stored in a database. [More details](docs/level_management.md).
- **Customization**: Options can be customized via a configuration file. [More details](docs/customization.md).
- **Map viewing**: Supports moving and zooming the map. When switching levels, the zoom will automatically adjust to fit the window size.
- **Player character animation**: The player character has smooth movement and animations in different directions.
- **Front-end and back-end separation**: Backend code (such as solvers) is decoupled from the frontend (such as Bevy).## Acknowledgements
- anian <>: For providing comprehensive answers to numerous inquiries regarding Sokoban and offering insightful recommendations.
- [@PaperPlaneLSY](https://github.com/PaperPlaneLSY): For testing, improving the skin, and providing additional support.## Keymap
### Mouse
| Key | Action |
| ------------------------------------- | -------------------------------------- |
| Click `Left` on player reachable area | Move the character to this position |
| Click `Left` on a box | Show the pushable area of the box |
| Click `Left` on box pushable area | Push the selected box to this position |
| Hold `Right` and drag | Adjust viewport |
| Click `Button 4` | Undo the last push |
| Click `Button 5` | Redo the last push |
| Scroll `Middle` | Zoom in/out |### Keyboard
| Key | Action |
| ------------------------- | ------------------------------------------ |
| `W`/`A`/`S`/`D` | Move the character |
| Arrow keys | Move the character |
| `[`/`]` | Switch to the previous/next level |
| `Ctrl` + `[`/`Ctrl` + `]` | Switch to the previous/next unsolved level |
| `Ctrl` + `Z` | Undo the last push |
| `Ctrl` + `Shift` + `Z` | Redo the last push |
| `Esc` | Reset current level |
| `-`/`=` | Zoom in/out |
| `Ctrl` + `V` | Import levels from clipboard |
| `Ctrl` + `C` | Export level to clipboard |
| `P` | Toggle automatic solution |
| `I` | Toggle instant move[^1] |
| `F11` | Toggle fullscreen |### Keyboard (Vim)
| Key | Action |
| --------------- | ------------------ |
| `H`/`J`/`K`/`L` | Move the character |
| `U` | Undo the last push |
| `Ctrl` + `R` | Redo the last push |### Controller
| Key | Action |
| -------------- | --------------------------------- |
| D-Pad | Move the character |
| `LB`/`RB` | Switch to the previous/next level |
| `B`/`Circle` | Undo the last push |
| `A`/`Cross` | Redo the last push |
| `LT`/`RT` | Zoom in/out |
| Right stick | Adjust viewport |
| `X`/`Square` | Toggle instant move[^1] |
| `Y`/`Triangle` | Toggle automatic solution |[^1]: Disables character and box movement animations.