public void Assign(BoardConstraints inBoardConstraints,Board inBoard) { mBoard = inBoard; for (int i = 0; i < 9; ++i) { RowsConstraints[i].Assign(inBoardConstraints.RowsConstraints[i]); ColumnsConstraints[i].Assign(inBoardConstraints.ColumnsConstraints[i]); ThreeByTreeBlockConstraints[i % 3, i / 3].Assign( inBoardConstraints.ThreeByTreeBlockConstraints[i % 3, i / 3] ); for (int j = 0; j < 9; ++j) CellsConstraints[i, j].Assign(inBoardConstraints.CellsConstraints[i, j]); if (inBoardConstraints.TopToBottomDiagonalConstraint != null) { TopToBottomDiagonalConstraint = new DiagonalConstraint(true); TopToBottomDiagonalConstraint.Assign(inBoardConstraints.TopToBottomDiagonalConstraint); } else { TopToBottomDiagonalConstraint = null; } if (inBoardConstraints.mBottomToTopDiagonalConstraint != null) { mBottomToTopDiagonalConstraint = new DiagonalConstraint(false); mBottomToTopDiagonalConstraint.Assign(inBoardConstraints.mBottomToTopDiagonalConstraint); } else { mBottomToTopDiagonalConstraint = null; } } }
public BoardConstraints() { RowsConstraints = new RowConstraint[9]; ColumnsConstraints = new ColumnConstraint[9]; for(int i=0;i<9;++i) { RowsConstraints[i] = new RowConstraint(i); ColumnsConstraints[i] = new ColumnConstraint(i); } ThreeByTreeBlockConstraints = new ThreeByThreeBlockConstraint[3, 3]; for(int i=0;i<3;++i) for(int j=0;j<3;++j) ThreeByTreeBlockConstraints[i, j] = new ThreeByThreeBlockConstraint(i,j); CellsConstraints = new CellConstraint[9,9]; for (int i = 0; i < 9; ++i) for (int j = 0; j < 9; ++j) CellsConstraints[i, j] = new CellConstraint(i,j); TopToBottomDiagonalConstraint = null; mBottomToTopDiagonalConstraint = null; }
private bool SetupDiagonalConstraints(bool inEnforceDiagonalsConstraint) { bool statusOK; if (inEnforceDiagonalsConstraint) { TopToBottomDiagonalConstraint = new DiagonalConstraint(true); statusOK = TopToBottomDiagonalConstraint.Init(mBoard); if (statusOK) { mBottomToTopDiagonalConstraint = new DiagonalConstraint(false); statusOK = mBottomToTopDiagonalConstraint.Init(mBoard); } } else { TopToBottomDiagonalConstraint = null; mBottomToTopDiagonalConstraint = null; statusOK = true; } return statusOK; }