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(); } }