public void Rotate(RubikCubeMoviment moviment)
        {
            var oldState = (FaceCube <T>) this.MemberwiseClone();

            if (moviment.Axis == Axis.X)
            {
                //up
                if (moviment.Spin == Spin.Clockwise)
                {
                    this.Front  = oldState.Bottom;
                    this.Bottom = oldState.Back;
                    this.Back   = oldState.Top;
                    this.Top    = oldState.Front;
                }
                //down
                else
                {
                    this.Front  = oldState.Top;
                    this.Bottom = oldState.Front;
                    this.Back   = oldState.Bottom;
                    this.Top    = oldState.Back;
                }
            }
            else if (moviment.Axis == Axis.Y)
            {
                //left
                if (moviment.Spin == Spin.Clockwise)
                {
                    this.Front = oldState.Right;
                    this.Left  = oldState.Front;
                    this.Back  = oldState.Left;
                    this.Right = oldState.Back;
                }
                //right
                else
                {
                    this.Front = oldState.Left;
                    this.Left  = oldState.Back;
                    this.Back  = oldState.Right;
                    this.Right = oldState.Front;
                }
            }
            else if (moviment.Axis == Axis.Z)
            {
                if (moviment.Spin == Spin.Clockwise)
                {
                    this.Top    = oldState.Left;
                    this.Right  = oldState.Top;
                    this.Bottom = oldState.Right;
                    this.Left   = oldState.Bottom;
                }
                else
                {
                    this.Top    = oldState.Right;
                    this.Right  = oldState.Bottom;
                    this.Bottom = oldState.Left;
                    this.Left   = oldState.Top;
                }
            }
        }
Example #2
0
 public Animation(List <Cube> animationCubes, int degree, RubikCubeMoviment moviment)
 {
     this.animationCubes = animationCubes;
     this.leftDegree     = degree;
     this.moviment       = moviment;
     this.AnimationEnded = false;
 }
Example #3
0
 public void Manipulate(RubikCubeMoviment moviment)
 {
     rubiksCube.Manipulate(moviment);
 }
Example #4
0
        private void btnFirstYLeft_Click(object sender, EventArgs e)
        {
            RubikCubeMoviment moviment = new RubikCubeMoviment(Depth.First, Spin.Clockwise, Axis.Y);

            rubikForm.Manipulate(moviment);
        }
Example #5
0
        private void btnSecondXDown_Click(object sender, EventArgs e)
        {
            RubikCubeMoviment moviment = new RubikCubeMoviment(Depth.Second, Spin.Anticlockwise, Axis.X);

            rubikForm.Manipulate(moviment);
        }
Example #6
0
        private void btnThirdYRight_Click(object sender, EventArgs e)
        {
            RubikCubeMoviment moviment = new RubikCubeMoviment(Depth.Third, Spin.Anticlockwise, Axis.Y);

            rubikForm.Manipulate(moviment);
        }