Skip to content

stanleydesu/cubedesu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cubedesu

Rubik's Cube simulator written in Rust

Features

  • Simulation of an arbitrarily sized NxNxN Rubik's Cube, allowing moves with keyboard input

Cube

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 axis
  • src/facelet_model: Facelet implementation of a cube, represented as an array of stickers, ordered by U, R, F, D, L, then B face
  • src/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

Resources Used