Example #1
0
        protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
        {
            base.OnMouseLeftButtonUp(e);

            if (!IsFlagged)
            {
                if (IsMine)
                {
                    Background = new SolidColorBrush(Color.FromRgb(219, 43, 31));
                    Content    = new Image
                    {
                        Source            = new BitmapImage(new Uri(minePath)),
                        VerticalAlignment = VerticalAlignment.Center
                    };
                    Console.WriteLine("GAME OVER");
                    Game.Lose();

                    // Do game over
                }
                else
                {
                    Reveal(PosX, PosY);
                    Game.GameBoard.RevealedCount++;
                    // Check if all non-mine tiles are clear, display score
                    if (DidWin())
                    {
                        Game.Win();
                    }
                }
            }
        }
Example #2
0
        /// <summary>
        /// Toggles covered tile flag on described coors.
        /// </summary>
        /// <param name="x_tile">Clicked tile x coors.</param>
        /// <param name="y_tile">Clicked tile y coors.</param>
        internal void RightClickTile(uint x_tile, uint y_tile)
        {
            switch (TileState[x_tile, y_tile]) // ignores uncovered tiles
            {
            case 0:                            // !flagged tile
                TileState[x_tile, y_tile] = 1;
                flagCount++;
                if (TileBomb[x_tile, y_tile])
                {
                    flaggedBombCount++;
                }
                break;

            case 1:                     // flagged tile
                TileState[x_tile, y_tile] = 0;
                flagCount--;
                if (TileBomb[x_tile, y_tile])
                {
                    flaggedBombCount--;
                }
                break;
            }
            // win condition
            if (flaggedBombCount == bombCount)
            {
                game.Win();
            }
        }
Example #3
0
        private void Reveal(int x, int y)
        {
            int cordsX;
            int cordsY;

            if (Game.GameBoard.TileBoard[x, y].CountNearbyMines() == 0)
            {
                for (int i = -1; i <= 2; i++)
                {
                    for (int j = -1; j <= 2; j++)
                    {
                        cordsX = x;
                        cordsY = y;

                        cordsX += j;
                        cordsY += i;

                        if (cordsX >= 0 && cordsX < Game.GameBoard.Width && cordsY >= 0 && cordsY < Game.GameBoard.Height)
                        {
                            if (!Game.GameBoard.TileBoard[cordsX, cordsY].IsRevealed && !Game.GameBoard.TileBoard[cordsX, cordsY].IsMine && !Game.GameBoard.TileBoard[cordsX, cordsY].IsFlagged)
                            {
                                Game.GameBoard.TileBoard[cordsX, cordsY].IsRevealed = true;
                                Game.GameBoard.TileBoard[cordsX, cordsY].IsEnabled  = false;
                                Game.GameBoard.TileBoard[cordsX, cordsY].Background = new SolidColorBrush(Color.FromRgb(255, 255, 255));
                                Game.GameBoard.RevealedCount++;
                                if (DidWin())
                                {
                                    Game.Win();
                                    return;
                                }

                                if (Game.GameBoard.TileBoard[cordsX, cordsY].CountNearbyMines() != 0)
                                {
                                    int nearby = Game.GameBoard.TileBoard[cordsX, cordsY].CountNearbyMines();
                                    Game.GameBoard.TileBoard[cordsX, cordsY].Content = nearby;

                                    SetTextColor(nearby, cordsX, cordsY);
                                }

                                if (Game.GameBoard.TileBoard[cordsX, cordsY].CountNearbyMines() == 0)
                                {
                                    Reveal(cordsX, cordsY);
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                Content    = CountNearbyMines();
                IsRevealed = true;
                IsEnabled  = false;
                Background = new SolidColorBrush(Color.FromRgb(255, 255, 255));
                SetTextColor(CountNearbyMines(), x, y);
            }
        }