Skip to content

📷 Take a picture of your Rubik's Cube and solve it! (Android)

Notifications You must be signed in to change notification settings

SChakravorti21/CubeAssist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CubeAssist

Android App that allows users to solve a Rubik's Cube by providing a solution after choosing from 3 input types

Motivation

My main motivation for creating this app was to learn about Android app development. Since I had already created a console Java program that outputted a solution to a cube given a text scramble, I figured I could learn a thing or two about Android by converting the console version.

Secondary motivation: I noticed that the app store is quite lacking in apps that teach users how to solve the cube. While it watching YouTube videos to learn is fine, an interactive way of learning the process is even better (in my opinion).

How it Works

There is a Navigation Bar to help get around the app, whose layout is arranged through fragment transactions and/or creating Activity intents. The solution to the cube is animated in 2D graphics with an "unfolded" cube using custom views.

Notes:

The Camera Mode will not run until the user manually grants it permissions in settings.

Cube may not appear consistently on different screen sizes yet (I am working on standardizing the views).

Input Modes

  1. Text input/Random Scramble Generation
  • Allows the user to enter a custom text scramble adhering to WCA standards
  • Allows the user to generate a random scramble and follow along
  • TAPPING ON THE CUBE plays and pauses the solution animation
  • Swiping from right to left on the cube moves back one step
  • Swiping from left to right on the cube moves forward one step
  • The view for this mode is the same as the solution view that all other fragments redirect to
  • Allows user to reset the solution process, as well as skip through phases of the process
  1. Manual Color Input
  • Provides user instructions as to hold the cube while inputting colors
  • User can easily move between sides of the cube
  • User can rotate sides without having to re-input all colors
  • Simple palette is available to the user to pick colors to input
  • Simple error checking: the app will check Edge-Orientation and Corner-Orientation to ensure that an inputted cube is valid
  1. Camera Mode
  • Instructions for using this mode can be hidden and unhidden from the top of the view
  • User is shown where to align the cube using a yellow grid on a SurfaceView
  • Side selection drop-up menu_ allows user to select which side they are taking an image of
  • Pressing the solve button redirects to Manual Input mode for user to double-check that all colors are consistent

Media

Video 1

(Shows the usage of the camera mode to generate a solution for a real life cube! Skip through the parts of me double-checking and adjusting certain entries if you wish.)

Video 1

Video 2

(Shows random scramble generation, solution speed adjustment, and skipping around phases.)

Video 2

Video 3

(Shows how a custom text scramble can be inputted.)

Video 3

Video 4

(Shows a regular solution at a moderately fast speed.)

Video 4

About

📷 Take a picture of your Rubik's Cube and solve it! (Android)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages