示例#1
0
 public int GetBlockHeight()
 {
     if (_board != null)
     {
         return(_board.GetBlockHeight());
     }
     else
     {
         throw new GameNotStartedException();
     }
 }
示例#2
0
        private bool SearchColumnForValuesThatOnlyFitInOneBlock(int column)
        {
            List <int> possibleValuesInColumnInBlock;
            bool       changes = false;

            for (int i = 0; i != _board.GetBoardSize(); i += _board.GetBlockHeight())
            {
                possibleValuesInColumnInBlock = GetPossibleValuesInSectionInBlock(_board.GetColumnCells(column), i, _board.GetBlockHeight());

                foreach (int value in possibleValuesInColumnInBlock)
                {
                    //Sjekker om det finnes verdier i kolonnen som bare kan puttes i den gitte blokken, og fjerner eventuelt verdiene i blokken som ikke ligger på samme kolonne
                    bool uniqueValue = CheckIfPossibleValueOnlyExistsInBlockInSelection(_board.GetColumnCells(column), value, i, _board.GetBlockWidth());
                    if (uniqueValue == true)
                    {
                        for (int j = 0; j != _board.GetBoardSize(); j++)
                        {
                            if ((column != GetColumnFromBlockPosition(column, j)) && (possibleValues[GetRowFromBlockPosition(i, j), GetColumnFromBlockPosition(column, j)].Contains(value) == true))
                            {
                                possibleValues[GetRowFromBlockPosition(i, j), GetColumnFromBlockPosition(column, j)].Remove(value);
                                changes = true;
                            }
                        }
                    }
                    //Sjekker om det finnes verdier i blokken som bare kan puttes i den gitte kolonnen, og fjerner eventuelt verdiene i kolonnen som ikke ligger i samme blokk
                    uniqueValue = CheckIfPossibleValueOnlyExistsInColumnInBlock(_board.GetBlockCells(i, column), value, _board.GetBlockHeight(), column);
                    if (uniqueValue == true)
                    {
                        for (int j = 0; j != _board.GetBoardSize(); j++)
                        {
                            if (((j < i) || (j >= (i + _board.GetBlockWidth()))) && (possibleValues[j, column].Contains(value) == true))
                            {
                                possibleValues[j, column].Remove(value);
                                changes = true;
                            }
                        }
                    }
                }
            }
            return(changes);
        }