Class Cube

java.lang.Object
  extended by greenfoot.Actor
      extended by Cube

public class Cube
extends greenfoot.Actor

Repraesentation eines virtuellen Rubiks-Cube. Direkt nach dem Konstruktor-Aufruf ist der Wuerfel vollstaendig geloest. Ueber statische Attribute der Klasse ist eine Orientierung "OBEN, UNTEN,..." und eine Farbnennung "ROT, BLAU, ..." festgelegt.

Die Sichtperspektive auf den Wuerfel ist dabei immer von VORNE. Bei der getColor-Methode ist eine Angabe in Zeilen und Spalten unklar, wenn die Art der Perspektive nicht klar definiert ist. Um eine Sicht auf die jeweiligen Flächen zu definieren ist daher die Wurfeldrehung festgelegt, durch die die gesuchte Flaeche nach vorne gelangt. Die Notation der Drehung ist dabei bezogen auf http://de.wikipedia.org/wiki/Zauberwürfel#Buchstabennotation

x (rotate): rotate the entire Cube on R
y (rotate): rotate the entire Cube on U
z (rotate): rotate the entire Cube on F
HINTEN: y2
RECHTS: y
LINKS: y'
OBEN: x'
UNTEN: x

Zusaetzliche Bewegungsmoeglichkeiten sind nach http://en.wikipedia.org/wiki/Rubik%27s_Cube#Move_notation eingebaut (standing, equator, middle).

Version:
1.0 vom 27.1.2014
Author:
Matthias Heming

Field Summary
static int BLAU
           
static int GELB
           
static int GRUEN
           
static int HINTEN
           
static int LINKS
           
static int OBEN
           
static int ORANGE
           
static int RECHTS
           
static int ROT
           
static int UNTEN
           
static int VORNE
           
static int WEISS
           
 
Constructor Summary
Cube()
          Ein vollstaendig geloester Wuerfel wird erstellt.
 
Method Summary
 void back()
           
 void back2()
           
 void backInverse()
           
 java.lang.String color2String(int color)
           
 void connectToWorld(BG pworld)
          Herstellung einer Verbindung zu einem BG-Objekt.
 void down()
           
 void down2()
           
 void downInverse()
           
 void equator()
           
 void equator2()
           
 void equatorInverse()
           
 void front()
           
 void front2()
           
 void frontInverse()
           
 int getColor(CubePosition cp)
          Diese Methode gibt die aktuelle Farbe einer Wuerfelteilflaeche zurueck.
 int getColor(int flaechencode, int x, int y)
          Diese Methode gibt die aktuelle Farbe einer Wuerfelteilflaeche zurueck.
 void left()
           
 void left2()
           
 void leftInverse()
           
 void loeseWuerfel()
           
 void middle()
           
 void middle2()
           
 void middleInverse()
           
 void right()
           
 void right2()
           
 void rightInverse()
           
 void scramble()
           
 CubePosition searchForCorner(int color1, int color2)
          Diese Methode sucht nach einer Ecke, die durch die angegebenen Farben definiert ist.
 CubePosition searchForEdge(int color1, int color2)
          Diese Methode sucht nach einer Kante, die durch die angegebenen Farben definiert ist.
 void smallBack()
           
 void smallBack2()
           
 void smallBackInverse()
           
 void smallDown()
           
 void smallDown2()
           
 void smallDownInverse()
           
 void smallFront()
           
 void smallFront2()
           
 void smallFrontInverse()
           
 void smallLeft()
           
 void smallLeft2()
           
 void smallLeftInverse()
           
 void smallRight()
           
 void smallRight2()
           
 void smallRightInverse()
           
 void smallUp()
           
 void smallUp2()
           
 void smallUpInverse()
           
 void standing()
           
 void standing2()
           
 void standingInverse()
           
 void up()
           
 void up2()
           
 void updateView()
          Ein Aufruf dieser Methode gibt an ein eventuell verbundenes BG-Objekt den Hinweis auf eine evtl.
 void upInverse()
           
 void xCubeRotate()
           
 void yCubeRotate()
           
 void zCubeRotate()
           
 
Methods inherited from class
act, addedToWorld, getImage, getIntersectingObjects, getNeighbours, getObjectsAtOffset, getObjectsInRange, getOneIntersectingObject, getOneObjectAtOffset, getRotation, getWorld, getX, getY, intersects, isTouching, move, removeTouching, setImage, setImage, setLocation, setRotation, turn, turnTowards
 
Methods inherited from class
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BLAU

public static final int BLAU
See Also:
Constant Field Values

GELB

public static final int GELB
See Also:
Constant Field Values

GRUEN

public static final int GRUEN
See Also:
Constant Field Values

HINTEN

public static final int HINTEN
See Also:
Constant Field Values

LINKS

public static final int LINKS
See Also:
Constant Field Values

OBEN

public static final int OBEN
See Also:
Constant Field Values

ORANGE

public static final int ORANGE
See Also:
Constant Field Values

RECHTS

public static final int RECHTS
See Also:
Constant Field Values

ROT

public static final int ROT
See Also:
Constant Field Values

UNTEN

public static final int UNTEN
See Also:
Constant Field Values

VORNE

public static final int VORNE
See Also:
Constant Field Values

WEISS

public static final int WEISS
See Also:
Constant Field Values
Constructor Detail

Cube

public Cube()
Ein vollstaendig geloester Wuerfel wird erstellt.

Method Detail

back

public void back()

back2

public void back2()

backInverse

public void backInverse()

color2String

public java.lang.String color2String(int color)

connectToWorld

public void connectToWorld(BG pworld)
Herstellung einer Verbindung zu einem BG-Objekt. Ein solches Objekt kann den Wuerfel visuell darstellen und Drehungen per Tastenkuerzel ausloesen. Falls eine Verbindung besteht, wird jede Aenderung des Wuerfelobjektes per Aufruf der Methode "updateView" an das verbundene BG Objekts mitgeteilt.


down

public void down()

down2

public void down2()

downInverse

public void downInverse()

equator

public void equator()

equator2

public void equator2()

equatorInverse

public void equatorInverse()

front

public void front()

front2

public void front2()

frontInverse

public void frontInverse()

getColor

public int getColor(CubePosition cp)
Diese Methode gibt die aktuelle Farbe einer Wuerfelteilflaeche zurueck. Beachte Hinweis zur Sichtweise auf die unterschiedlichen Wuerfelflaechen.

Parameters:
cp - Ein CubePosition-Objekt, in dem Flaechencode, Zeile und Spalte bereits enthalten ist.

getColor

public int getColor(int flaechencode,
                    int x,
                    int y)
Diese Methode gibt die aktuelle Farbe einer Wuerfelteilflaeche zurueck. Beachte Hinweis zur Sichtweise auf die unterschiedlichen Wuerfelflaechen!!

Parameters:
flaechencode - Auf welcher Seite des Wuerfels geschaut werden soll (OBEN, UNTEN, ...)
x - Zeile, nummeriert von 0 bis 2 und von oben nach unten (auf einer Fläche die Ecke rechts oben haette x=2 und y=0) (auf einer Fläche die Ecke links unten haette x=0 und y=2)
y - Spalte, nummeriert von 0 bis 2 und von links nach rechts (auf einer Fläche die Ecke rechts oben haette x=2 und y=0) (auf einer Fläche die Ecke links unten haette x=0 und y=2)

left

public void left()

left2

public void left2()

leftInverse

public void leftInverse()

loeseWuerfel

public void loeseWuerfel()

middle

public void middle()

middle2

public void middle2()

middleInverse

public void middleInverse()

right

public void right()

right2

public void right2()

rightInverse

public void rightInverse()

scramble

public void scramble()

searchForCorner

public CubePosition searchForCorner(int color1,
                                    int color2)
Diese Methode sucht nach einer Ecke, die durch die angegebenen Farben definiert ist. Die erste Farbe definiert die Teilflaeche des Wuerfels, die als Positionsobjekt zurueckgegeben wird. Die dritte Farbe der Ecke wird weggelassen, da die Vorgabe gemacht wird, dass die Farben jeweils im Uhrzeigersinn gesehen werden und damit die dritte Farbe bereits feststeht. Die Ecke ROT/BLAU entspricht damit der Ecke ROT/BLAU/GELB, wobei die Ecke BLAU/ROT der Ecke BLAU/ROT/WEISS entspricht. Wird z.B. nach ROT/WEISS/BLAU gesucht, so wird die Ecke gesucht, jedoch nur die Position der ROTEN Teilflaeche zurueckgegeben.

Parameters:
color1 - Die erste Farbe, deren Position zurueckgegeben wird.
color2 - Die zweite Farbe, die zur Unterscheidung der vier unterschiedlichen Kanten zusaetzlich angegeben werden muss.
Returns:
Ein CubePosition-Objekt fuer die Position des Kantenstuecks mit der Farbe color1.

searchForEdge

public CubePosition searchForEdge(int color1,
                                  int color2)
Diese Methode sucht nach einer Kante, die durch die angegebenen Farben definiert ist. Die erste Farbe definiert die Teilflaeche des Wuerfels, die als Positionsobjekt zurueckgegeben wird. Wird z.B. nach ROT/BLAU gesucht, so wird die Kante gesucht, jedoch nur die Position der ROTEN Teilflaeche zurueckgegeben.

Parameters:
color1 - Die erste Farbe, deren Position zurueckgegeben wird.
color2 - Die zweite Farbe, die zur Unterscheidung der vier unterschiedlichen Kanten zusaetzlich angegeben werden muss.
Returns:
Ein CubePosition-Objekt fuer die Position des Kantenstuecks mit der Farbe color1.

smallBack

public void smallBack()

smallBack2

public void smallBack2()

smallBackInverse

public void smallBackInverse()

smallDown

public void smallDown()

smallDown2

public void smallDown2()

smallDownInverse

public void smallDownInverse()

smallFront

public void smallFront()

smallFront2

public void smallFront2()

smallFrontInverse

public void smallFrontInverse()

smallLeft

public void smallLeft()

smallLeft2

public void smallLeft2()

smallLeftInverse

public void smallLeftInverse()

smallRight

public void smallRight()

smallRight2

public void smallRight2()

smallRightInverse

public void smallRightInverse()

smallUp

public void smallUp()

smallUp2

public void smallUp2()

smallUpInverse

public void smallUpInverse()

standing

public void standing()

standing2

public void standing2()

standingInverse

public void standingInverse()

up

public void up()

up2

public void up2()

updateView

public void updateView()
Ein Aufruf dieser Methode gibt an ein eventuell verbundenes BG-Objekt den Hinweis auf eine evtl. Zustandsaenderung des Wuerfels weiter.


upInverse

public void upInverse()

xCubeRotate

public void xCubeRotate()

yCubeRotate

public void yCubeRotate()

zCubeRotate

public void zCubeRotate()