private void SelectTile(object arg) { GameTileModel oldTile = (GameTileModel)arg; bool newTileIsMine = oldTile.IsMine; bool newTileIsFlagged = IsSettingFlag ^ oldTile.IsFlagged; bool newTileIsSelected = oldTile.IsSelected || !IsSettingFlag; if ((oldTile.IsFlagged != newTileIsFlagged) || (oldTile.IsSelected != newTileIsSelected)) { int index = GameBoardCollection.IndexOf(oldTile); var newTile = new GameTileModel(oldTile.Row, oldTile.Col, newTileIsMine, newTileIsSelected, newTileIsFlagged, oldTile.NumMineNeighbors); GameBoardCollection[index] = newTile; OnPropertyChanged("NumberOfMinesRemainingToFlag"); logger.Trace("Gametile altered at position [%d,%d], index %d\nOld Tile - %s\nNewTile - %s", oldTile.Row, oldTile.Col, index, oldTile.ToString(), newTile.ToString()); if (newTile.NumMineNeighbors == 0 && !IsSettingFlag) { SelectNeighborsWithNoNeighboringMines(newTile); } if (CheckForGameWin()) { CurrentGameStatus = GameStatus.Won; } else if (newTile.IsMine && newTile.IsSelected) { RevealAllTiles(); CurrentGameStatus = GameStatus.Lost; } } }
static void Main(string[] args) { Board = GameBoard.InitialBoard (LENGTH, HEIGHT, CONNECTLENGTH); Solutions = new GameBoardCollection(); Visited = new GameBoardCollection(); PlayRound(); Console.WriteLine("Solution Count = " + Solutions.Count); }