示例#1
0
        public Square(int index, ContentType content = ContentType.Empty)
        {
            Index   = index;
            Content = content;

            switch (index)
            {
            case 8:
                Corner           = true;
                TopRow           = true;
                Row              = new[] { 8, 3, 4 };
                LeftColumn       = true;
                Column           = new[] { 8, 1, 6 };
                RowOpposite      = 4;
                ColumnOpposite   = 6;
                DiagonalOpposite = 2;
                Diagonals.Add(new[] { 8, 5, 2 });
                break;

            case 3:
                Side           = true;
                TopRow         = true;
                Row            = new[] { 8, 3, 4 };
                MiddleColumn   = true;
                Column         = new[] { 3, 5, 7 };
                ColumnOpposite = 7;
                break;

            case 4:
                Corner           = true;
                TopRow           = true;
                Row              = new[] { 8, 3, 4 };
                RightColumn      = true;
                Column           = new[] { 4, 9, 2 };
                RowOpposite      = 8;
                ColumnOpposite   = 2;
                DiagonalOpposite = 6;
                Diagonals.Add(new[] { 6, 5, 4 });
                break;

            case 1:
                Side        = true;
                MiddleRow   = true;
                Row         = new[] { 1, 5, 9 };
                LeftColumn  = true;
                Column      = new[] { 8, 1, 6 };
                RowOpposite = 9;
                break;

            case 5:
                Center       = true;
                MiddleRow    = true;
                Row          = new[] { 1, 5, 9 };
                MiddleColumn = true;
                Column       = new[] { 3, 5, 7 };
                Diagonals.Add(new[] { 8, 5, 2 });
                Diagonals.Add(new[] { 6, 5, 4 });
                break;

            case 9:
                Side        = true;
                MiddleRow   = true;
                Row         = new[] { 1, 5, 9 };
                RightColumn = true;
                Column      = new[] { 4, 9, 2 };
                RowOpposite = 1;
                break;

            case 6:
                Corner           = true;
                BottomRow        = true;
                Row              = new[] { 6, 7, 2 };
                LeftColumn       = true;
                Column           = new[] { 8, 1, 6 };
                RowOpposite      = 2;
                ColumnOpposite   = 8;
                DiagonalOpposite = 4;
                Diagonals.Add(new[] { 6, 5, 4 });
                break;

            case 7:
                Side           = true;
                MiddleColumn   = true;
                Column         = new[] { 3, 5, 7 };
                BottomRow      = true;
                Row            = new[] { 6, 7, 2 };
                ColumnOpposite = 3;
                break;

            case 2:
                Corner           = true;
                BottomRow        = true;
                Row              = new[] { 6, 7, 2 };
                RightColumn      = true;
                Column           = new[] { 4, 9, 2 };
                RowOpposite      = 6;
                ColumnOpposite   = 4;
                DiagonalOpposite = 8;
                Diagonals.Add(new[] { 8, 5, 2 });
                break;

            default:
                throw new AccessViolationException();
            }
        }