コード例 #1
0
ファイル: GameViewModel.cs プロジェクト: bd-g/minesweeper
        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;
                }
            }
        }
コード例 #2
0
 static void Main(string[] args)
 {
     Board = GameBoard.InitialBoard (LENGTH, HEIGHT, CONNECTLENGTH);
     Solutions = new GameBoardCollection();
     Visited = new GameBoardCollection();
     PlayRound();
     Console.WriteLine("Solution Count = " + Solutions.Count);
 }