public CubeFace(BitColour colour) { for (int i = 0; i < 9; i++) { SetBit(i, colour); } }
public void RotateRight() { BitColour[] newbits = new BitColour[9]; newbits[0] = _facebits[6]; newbits[1] = _facebits[3]; newbits[2] = _facebits[0]; newbits[3] = _facebits[7]; newbits[4] = _facebits[4]; newbits[5] = _facebits[1]; newbits[6] = _facebits[8]; newbits[7] = _facebits[5]; newbits[8] = _facebits[2]; _facebits = newbits; }
private void FrontForward() { BitColour l0 = _faces[FaceType.Left].GetBit(2); BitColour l1 = _faces[FaceType.Left].GetBit(5); BitColour l2 = _faces[FaceType.Left].GetBit(8); _faces[FaceType.Left].SetBit(2, _faces[FaceType.Bottom].GetBit(0)); _faces[FaceType.Left].SetBit(5, _faces[FaceType.Bottom].GetBit(1)); _faces[FaceType.Left].SetBit(8, _faces[FaceType.Bottom].GetBit(2)); _faces[FaceType.Bottom].SetBit(0, _faces[FaceType.Right].GetBit(6)); _faces[FaceType.Bottom].SetBit(1, _faces[FaceType.Right].GetBit(3)); _faces[FaceType.Bottom].SetBit(2, _faces[FaceType.Right].GetBit(0)); _faces[FaceType.Right].SetBit(0, _faces[FaceType.Top].GetBit(6)); _faces[FaceType.Right].SetBit(3, _faces[FaceType.Top].GetBit(7)); _faces[FaceType.Right].SetBit(6, _faces[FaceType.Top].GetBit(8)); _faces[FaceType.Top].SetBit(6, l2); _faces[FaceType.Top].SetBit(7, l1); _faces[FaceType.Top].SetBit(8, l0); _faces[FaceType.Front].RotateRight(); }
private void BackReverse() { BitColour l0 = _faces[FaceType.Left].GetBit(0); BitColour l1 = _faces[FaceType.Left].GetBit(3); BitColour l2 = _faces[FaceType.Left].GetBit(6); _faces[FaceType.Left].SetBit(0, _faces[FaceType.Bottom].GetBit(6)); _faces[FaceType.Left].SetBit(3, _faces[FaceType.Bottom].GetBit(7)); _faces[FaceType.Left].SetBit(6, _faces[FaceType.Bottom].GetBit(8)); _faces[FaceType.Bottom].SetBit(6, _faces[FaceType.Right].GetBit(8)); _faces[FaceType.Bottom].SetBit(7, _faces[FaceType.Right].GetBit(5)); _faces[FaceType.Bottom].SetBit(8, _faces[FaceType.Right].GetBit(2)); _faces[FaceType.Right].SetBit(8, _faces[FaceType.Top].GetBit(2)); _faces[FaceType.Right].SetBit(5, _faces[FaceType.Top].GetBit(1)); _faces[FaceType.Right].SetBit(2, _faces[FaceType.Top].GetBit(0)); _faces[FaceType.Top].SetBit(0, l2); _faces[FaceType.Top].SetBit(1, l1); _faces[FaceType.Top].SetBit(2, l0); _faces[FaceType.Back].RotateLeft(); }
private void LowerReverse() { BitColour l0 = _faces[FaceType.Front].GetBit(6); BitColour l1 = _faces[FaceType.Front].GetBit(7); BitColour l2 = _faces[FaceType.Front].GetBit(8); _faces[FaceType.Front].SetBit(6, _faces[FaceType.Right].GetBit(6)); _faces[FaceType.Front].SetBit(7, _faces[FaceType.Right].GetBit(7)); _faces[FaceType.Front].SetBit(8, _faces[FaceType.Right].GetBit(8)); _faces[FaceType.Right].SetBit(6, _faces[FaceType.Back].GetBit(2)); _faces[FaceType.Right].SetBit(7, _faces[FaceType.Back].GetBit(1)); _faces[FaceType.Right].SetBit(8, _faces[FaceType.Back].GetBit(0)); _faces[FaceType.Back].SetBit(2, _faces[FaceType.Left].GetBit(6)); _faces[FaceType.Back].SetBit(1, _faces[FaceType.Left].GetBit(7)); _faces[FaceType.Back].SetBit(0, _faces[FaceType.Left].GetBit(8)); _faces[FaceType.Left].SetBit(6, l0); _faces[FaceType.Left].SetBit(7, l1); _faces[FaceType.Left].SetBit(8, l2); _faces[FaceType.Bottom].RotateLeft(); }
private void UpperForward() { BitColour l0 = _faces[FaceType.Front].GetBit(0); BitColour l1 = _faces[FaceType.Front].GetBit(1); BitColour l2 = _faces[FaceType.Front].GetBit(2); _faces[FaceType.Front].SetBit(0, _faces[FaceType.Right].GetBit(0)); _faces[FaceType.Front].SetBit(1, _faces[FaceType.Right].GetBit(1)); _faces[FaceType.Front].SetBit(2, _faces[FaceType.Right].GetBit(2)); _faces[FaceType.Right].SetBit(0, _faces[FaceType.Back].GetBit(8)); _faces[FaceType.Right].SetBit(1, _faces[FaceType.Back].GetBit(7)); _faces[FaceType.Right].SetBit(2, _faces[FaceType.Back].GetBit(6)); _faces[FaceType.Back].SetBit(8, _faces[FaceType.Left].GetBit(0)); _faces[FaceType.Back].SetBit(7, _faces[FaceType.Left].GetBit(1)); _faces[FaceType.Back].SetBit(6, _faces[FaceType.Left].GetBit(2)); _faces[FaceType.Left].SetBit(0, l0); _faces[FaceType.Left].SetBit(1, l1); _faces[FaceType.Left].SetBit(2, l2); _faces[FaceType.Top].RotateRight(); }
private void RightReverse() { BitColour l0 = _faces[FaceType.Front].GetBit(2); BitColour l1 = _faces[FaceType.Front].GetBit(5); BitColour l2 = _faces[FaceType.Front].GetBit(8); _faces[FaceType.Front].SetBit(2, _faces[FaceType.Top].GetBit(2)); _faces[FaceType.Front].SetBit(5, _faces[FaceType.Top].GetBit(5)); _faces[FaceType.Front].SetBit(8, _faces[FaceType.Top].GetBit(8)); _faces[FaceType.Top].SetBit(2, _faces[FaceType.Back].GetBit(2)); _faces[FaceType.Top].SetBit(5, _faces[FaceType.Back].GetBit(5)); _faces[FaceType.Top].SetBit(8, _faces[FaceType.Back].GetBit(8)); _faces[FaceType.Back].SetBit(2, _faces[FaceType.Bottom].GetBit(2)); _faces[FaceType.Back].SetBit(5, _faces[FaceType.Bottom].GetBit(5)); _faces[FaceType.Back].SetBit(8, _faces[FaceType.Bottom].GetBit(8)); _faces[FaceType.Bottom].SetBit(2, l0); _faces[FaceType.Bottom].SetBit(5, l1); _faces[FaceType.Bottom].SetBit(8, l2); _faces[FaceType.Right].RotateLeft(); }
private void LeftForward() { BitColour l0 = _faces[FaceType.Front].GetBit(0); BitColour l1 = _faces[FaceType.Front].GetBit(3); BitColour l2 = _faces[FaceType.Front].GetBit(6); _faces[FaceType.Front].SetBit(0, _faces[FaceType.Top].GetBit(0)); _faces[FaceType.Front].SetBit(3, _faces[FaceType.Top].GetBit(3)); _faces[FaceType.Front].SetBit(6, _faces[FaceType.Top].GetBit(6)); _faces[FaceType.Top].SetBit(0, _faces[FaceType.Back].GetBit(0)); _faces[FaceType.Top].SetBit(3, _faces[FaceType.Back].GetBit(3)); _faces[FaceType.Top].SetBit(6, _faces[FaceType.Back].GetBit(6)); _faces[FaceType.Back].SetBit(0, _faces[FaceType.Bottom].GetBit(0)); _faces[FaceType.Back].SetBit(3, _faces[FaceType.Bottom].GetBit(3)); _faces[FaceType.Back].SetBit(6, _faces[FaceType.Bottom].GetBit(6)); _faces[FaceType.Bottom].SetBit(0, l0); _faces[FaceType.Bottom].SetBit(3, l1); _faces[FaceType.Bottom].SetBit(6, l2); _faces[FaceType.Left].RotateRight(); }
private char colourToLetter(BitColour colour) { switch (colour) { case BitColour.Blue: return('B'); case BitColour.Green: return('G'); case BitColour.Orange: return('O'); case BitColour.Red: return('R'); case BitColour.White: return('W'); case BitColour.Yellow: return('Y'); } return(' '); }
public void SetBit(int index, BitColour colour) { _facebits[index] = colour; }