Exemple #1
0
        /// <summary>
        /// Constructor of Centre to create a centre of specified colour
        /// </summary>
        /// <param name="colour">The colour the piece will be</param>
        public Centre(Cube.Colours colour)
        {
            this.colour = colour;

            pieceType = (int)Cube.PieceTypes.centre;

            switch (colour)
            {
            case Cube.Colours.green:
                position = Cube.Positions.top;
                break;

            case Cube.Colours.yellow:
                position = Cube.Positions.front;
                break;

            case Cube.Colours.red:
                position = Cube.Positions.right;
                break;

            case Cube.Colours.white:
                position = Cube.Positions.back;
                break;

            case Cube.Colours.orange:
                position = Cube.Positions.left;
                break;

            case Cube.Colours.blue:
                position = Cube.Positions.bottom;
                break;
            }
        }
Exemple #2
0
        /// <summary>
        /// Returns the colour in the specifed position as a letter (as a string). Used for
        /// making a printable cube
        /// </summary>
        /// <param name="pos">The position to get the string for</param>
        /// <returns>String that represents the colour at the position of the piece</returns>
        public string GetColourString(Cube.Positions pos)
        {
            for (int i = 0; i < position.Length; i++)
            {
                if (position[i] == pos)
                {
                    if (colour[i] == Cube.Colours.green)
                    {
                        return("g");
                    }
                    else if (colour[i] == Cube.Colours.blue)
                    {
                        return("b");
                    }
                    else if (colour[i] == Cube.Colours.yellow)
                    {
                        return("y");
                    }
                    else if (colour[i] == Cube.Colours.white)
                    {
                        return("w");
                    }
                    else if (colour[i] == Cube.Colours.orange)
                    {
                        return("o");
                    }
                    else
                    {
                        return("r");
                    }
                }
            }

            return(null);
        }
Exemple #3
0
 // Return if piece is within the specified side
 public override bool InSide(Cube.Positions side)
 {
     if (position == side)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemple #4
0
        // Return if in side
        public override bool InSide(Cube.Positions side)
        {
            foreach (Cube.Positions pos in position)
            {
                if (pos == side)
                {
                    return(true);
                }
            }

            return(false);
        }
Exemple #5
0
        // Return if piece is in the specified side
        public override bool InSide(Cube.Positions side)
        {
            bool inSide = false;

            foreach (Cube.Positions pos in position)
            {
                if (pos.Equals(side))
                {
                    inSide = true;
                }
            }

            return(inSide);
        }
Exemple #6
0
        /// <summary>
        /// Contruct the Edge with given colours
        /// </summary>
        /// <param name="colours">The colours the piece will be</param>
        public Edge(Cube.Colours[] colours)
        {
            this.colour = new Cube.Colours[2];
            position    = new Cube.Positions[2];

            pieceType = Cube.PieceTypes.edge;

            for (int i = 0; i < 2; i++)
            {
                colour[i] = colours[i];

                switch (colour[i])
                {
                case Cube.Colours.green:
                    position[i] = Cube.Positions.top;
                    break;

                case Cube.Colours.yellow:
                    position[i] = Cube.Positions.front;
                    break;

                case Cube.Colours.red:
                    position[i] = Cube.Positions.right;
                    break;

                case Cube.Colours.white:
                    position[i] = Cube.Positions.back;
                    break;

                case Cube.Colours.orange:
                    position[i] = Cube.Positions.left;
                    break;

                case Cube.Colours.blue:
                    position[i] = Cube.Positions.bottom;
                    break;
                }
            }
        }
Exemple #7
0
 /// <summary>
 /// Check
 /// </summary>
 /// <param name="side"></param>
 /// <returns>Whether in the side or not</returns>
 public abstract bool InSide(Cube.Positions side);
Exemple #8
0
 /// <summary>
 /// Rotates the side requested in a clockwise or anticlockwise direction (clockwise is relative
 /// to the front face)
 /// Goes through and changes the positions of the pieces within the selected side then updates
 /// the cube.
 /// </summary>
 /// <param name="side">The side to be rotated</param>
 /// <param name="clockWise">Rotate clockwise?</param>
 public void RotateAroundSide(Cube.Positions side, bool clockWise)
 {
     if (side.Equals(Cube.Positions.front))
     {
         for (int i = 0; i < position.Length; i++)
         {
             if (clockWise)
             {
                 if (position[i] == Cube.Positions.left)
                 {
                     position[i] = Cube.Positions.top;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.top)
                 {
                     position[i] = Cube.Positions.right;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.right)
                 {
                     position[i] = Cube.Positions.bottom;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.bottom)
                 {
                     position[i] = Cube.Positions.left;
                     continue;
                 }
             }
             else
             {
                 if (position[i] == Cube.Positions.left)
                 {
                     position[i] = Cube.Positions.bottom;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.top)
                 {
                     position[i] = Cube.Positions.left;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.right)
                 {
                     position[i] = Cube.Positions.top;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.bottom)
                 {
                     position[i] = Cube.Positions.right;
                     continue;
                 }
             }
         }
     }
     else if (side.Equals(Cube.Positions.back))
     {
         for (int i = 0; i < position.Length; i++)
         {
             if (!clockWise)
             {
                 if (position[i] == Cube.Positions.left)
                 {
                     position[i] = Cube.Positions.top;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.top)
                 {
                     position[i] = Cube.Positions.right;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.right)
                 {
                     position[i] = Cube.Positions.bottom;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.bottom)
                 {
                     position[i] = Cube.Positions.left;
                     continue;
                 }
             }
             else
             {
                 if (position[i] == Cube.Positions.left)
                 {
                     position[i] = Cube.Positions.bottom;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.top)
                 {
                     position[i] = Cube.Positions.left;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.right)
                 {
                     position[i] = Cube.Positions.top;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.bottom)
                 {
                     position[i] = Cube.Positions.right;
                     continue;
                 }
             }
         }
     }
     else if (side.Equals(Cube.Positions.right))
     {
         for (int i = 0; i < position.Length; i++)
         {
             if (clockWise)
             {
                 if (position[i] == Cube.Positions.front)
                 {
                     position[i] = Cube.Positions.top;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.top)
                 {
                     position[i] = Cube.Positions.back;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.back)
                 {
                     position[i] = Cube.Positions.bottom;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.bottom)
                 {
                     position[i] = Cube.Positions.front;
                     continue;
                 }
             }
             else
             {
                 if (position[i] == Cube.Positions.front)
                 {
                     position[i] = Cube.Positions.bottom;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.top)
                 {
                     position[i] = Cube.Positions.front;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.back)
                 {
                     position[i] = Cube.Positions.top;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.bottom)
                 {
                     position[i] = Cube.Positions.back;
                     continue;
                 }
             }
         }
     }
     else if (side.Equals(Cube.Positions.left))
     {
         for (int i = 0; i < position.Length; i++)
         {
             if (!clockWise)
             {
                 if (position[i] == Cube.Positions.front)
                 {
                     position[i] = Cube.Positions.top;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.top)
                 {
                     position[i] = Cube.Positions.back;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.back)
                 {
                     position[i] = Cube.Positions.bottom;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.bottom)
                 {
                     position[i] = Cube.Positions.front;
                     continue;
                 }
             }
             else
             {
                 if (position[i] == Cube.Positions.front)
                 {
                     position[i] = Cube.Positions.bottom;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.top)
                 {
                     position[i] = Cube.Positions.front;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.back)
                 {
                     position[i] = Cube.Positions.top;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.bottom)
                 {
                     position[i] = Cube.Positions.back;
                     continue;
                 }
             }
         }
     }
     else if (side.Equals(Cube.Positions.top))
     {
         for (int i = 0; i < position.Length; i++)
         {
             if (clockWise)
             {
                 if (position[i] == Cube.Positions.front)
                 {
                     position[i] = Cube.Positions.left;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.right)
                 {
                     position[i] = Cube.Positions.front;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.back)
                 {
                     position[i] = Cube.Positions.right;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.left)
                 {
                     position[i] = Cube.Positions.back;
                     continue;
                 }
             }
             else
             {
                 if (position[i] == Cube.Positions.front)
                 {
                     position[i] = Cube.Positions.right;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.right)
                 {
                     position[i] = Cube.Positions.back;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.back)
                 {
                     position[i] = Cube.Positions.left;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.left)
                 {
                     position[i] = Cube.Positions.front;
                     continue;
                 }
             }
         }
     }
     else if (side.Equals(Cube.Positions.bottom))
     {
         for (int i = 0; i < position.Length; i++)
         {
             if (!clockWise)
             {
                 if (position[i] == Cube.Positions.front)
                 {
                     position[i] = Cube.Positions.left;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.right)
                 {
                     position[i] = Cube.Positions.front;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.back)
                 {
                     position[i] = Cube.Positions.right;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.left)
                 {
                     position[i] = Cube.Positions.back;
                     continue;
                 }
             }
             else
             {
                 if (position[i] == Cube.Positions.front)
                 {
                     position[i] = Cube.Positions.right;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.right)
                 {
                     position[i] = Cube.Positions.back;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.back)
                 {
                     position[i] = Cube.Positions.left;
                     continue;
                 }
                 else if (position[i] == Cube.Positions.left)
                 {
                     position[i] = Cube.Positions.front;
                     continue;
                 }
             }
         }
     }
 }
Exemple #9
0
 /// <summary>
 /// Sets the position of the piece. Used for moving the piece, or for creating a cube that
 /// isn't already solved
 /// </summary>
 /// <param name="newPosition">The new position to set to</param>
 public void SetPosition(Cube.Positions newPosition)
 {
     position = newPosition;
 }