Magic Cube is an application which lets one play with various TwistyObjects. Currently implemented objects are listed below in the 'How to add a new Object' section.
The app contains graphics effects provided by the Distorted library.
Users can submit their best times to a central High Scores list and download results made by others.
Additionally there's a near-perfect, instantenous 3x3x3 Cube Solver (Kociemba) and a about 2000 Pretty Patterns (more in the plans!).
Magic Cube is open source and released under the terms of the GNU General Public License v2 (GPL).
Google play : https://play.google.com/store/apps/details?id=org.distorted.magic
Amazon App Store: https://www.amazon.co.uk/Developer-Magic-Cube/dp/B0875PSWTK
git clone http://distorted.org/git/distorted-library.git git clone http://distorted.org/git/distorted-cube.git
How to add a new Object¶
- Write a new class which extends TwistyObject (this one defines the Object itself)
- Write a new class which extends Movement (this one defines the connection between finger swipes on the screen and Object rotations)
- add your new classes to the ObjectList enum (here you will also need to provide a small icon to add to the "play" drop-down object list)
and your new Object will automatically become available in the "Play" drop-down list.
How to add a new Transition Effect¶
If you would like to add, say, a new WIN effect (i.e. animation which happens when the Object gets solved) all you need to do is add a new class which extends org.distorted.effect.WinEffect and add the new class to the org.distorted.effect.WinEffect.Type enum.
The new effect will automatically become available in the Effects dialog.
How to add a new Pretty Pattern¶
If you've got a collection of Pretty Patterns for a given (already implemented!) TwistyObject, say a Pyraminx 3x3x3, all you need to do to connect it to the Magic Cube is to create a table of Strings describing the patterns ( format needs to follow the one already done in Cube Patterns ) and add the new pattern list to the org.distorted.patterns.RubikPatternList enum.
The new list of Patterns will automatically become available in the Patterns dialog.
How to add a new Solver¶
Work in the org.distorted.solvers package. First create a subdirectory containing the code of your actual solver, then connect it to the rest of the program by modifying the org.distorted.solvers.SolverMain class, and finally add the new solver to the org.distorted.solvers.ImplementedSolversList enum.
Currently implemented solvers: a near-perfect, instantenous Cube3 solver.