Awesome
cubedesu
Rubik's Cube simulator written in Rust
Features
- Simulation of an arbitrarily sized NxNxN Rubik's Cube, allowing moves with keyboard input
Usage
Build the project (optionally in release mode):
$ cargo build [--release]
Run the project:
$ cargo run
Or use the web version: https://stanleydesu.github.io/cubedesu/
Refer to keymap for controls
Project Structure
src/lib
: Cube related types, such as a Face, Move, Turn, Movement (a Move associated with a Turn)src/geometry_model
: Geometric implementation of a cube, represented with an array of all the cube's stickers (3-dimensional points) and moves as rotations amongst some axissrc/facelet_model
: Facelet implementation of a cube, represented as an array of stickers, ordered by U, R, F, D, L, then B facesrc/vec3
: Custom memory-efficient 3D vector implementation designed specifically for the geometry model
Dependencies
- Thanks to macroquad, brilliant and simple API that helped with easily rendering a cube
- Thanks to strum, facilitated parsing of strings into Moves and Turns as well as enum iteration and serialization
- Thanks to proptest, great for property-based testing