예제 #1
0
        private void Dismantle_click(object sender, MouseButtonEventArgs e)
        {
            MineField_Button b = (MineField_Button)sender;

            if (!b.Opened)
            {
                if (b.Dismantled)
                {
                    b.Dismantled = false;
                    b.SetType(CellType.Button);
                }
                else
                {
                    b.Dismantled = true;
                    b.SetType(CellType.Flagged);
                }
                b.Dismantle?.Invoke(b, new EventArgs());
            }
        }
예제 #2
0
        private void Click(object sender, MouseButtonEventArgs e)
        {
            button = (MineField_Button)sender;
            timer.Start();
            ChangeEmotion?.Invoke(this, new EventArgs());

            if (!button.Dismantled)
            {
                if (button.Mined)
                {
                    button.SetType(CellType.BombExplode);
                    //Explode?.Invoke(this, new EventArgs());
                    button.Explode?.Invoke(this, new EventArgs());
                }
                else
                {
                    Open(button);
                }
            }

            int counter = 0;

            foreach (MineField_Button b in buttonArray)
            {
                if (b.Opened)
                {
                    counter++;
                }
            }

            if (counter == mineField.Rows * mineField.Columns - mineField.Mines)
            {
                mineField.IsEnabled = false;
                Victory?.Invoke(this, new EventArgs());
                timer.Stop();
                foreach (MineField_Button b in buttonArray)
                {
                    if (!b.Dismantled && !b.Opened)
                    {
                        b.SetType(CellType.Flagged);
                        dismantledMines++;
                        DismantledMinesChanged?.Invoke(this, new EventArgs());
                    }
                }
            }
        }
예제 #3
0
        private void Open(MineField_Button button)
        {
            if (!button.Opened && !button.Dismantled)
            {
                button.Opened = true;

                int c = 0;
                if (CheckMine(button.X - 1, button.Y - 1))
                {
                    c++;
                }
                if (CheckMine(button.X - 0, button.Y - 1))
                {
                    c++;
                }
                if (CheckMine(button.X + 1, button.Y - 1))
                {
                    c++;
                }
                if (CheckMine(button.X - 1, button.Y - 0))
                {
                    c++;
                }
                if (CheckMine(button.X - 0, button.Y - 0))
                {
                    c++;
                }
                if (CheckMine(button.X + 1, button.Y - 0))
                {
                    c++;
                }
                if (CheckMine(button.X - 1, button.Y + 1))
                {
                    c++;
                }
                if (CheckMine(button.X - 0, button.Y + 1))
                {
                    c++;
                }
                if (CheckMine(button.X + 1, button.Y + 1))
                {
                    c++;
                }

                if (c > 0)
                {
                    switch (c)
                    {
                    case 1:
                        button.SetType(CellType.Near1);
                        break;

                    case 2:
                        button.SetType(CellType.Near2);
                        break;

                    case 3:
                        button.SetType(CellType.Near3);
                        break;

                    case 4:
                        button.SetType(CellType.Near4);
                        break;

                    case 5:
                        button.SetType(CellType.Near5);
                        break;

                    case 6:
                        button.SetType(CellType.Near6);
                        break;

                    case 7:
                        button.SetType(CellType.Near7);
                        break;

                    case 8:
                        button.SetType(CellType.Near8);
                        break;
                    }
                }
                else
                {
                    button.SetType(CellType.Empty);
                    OpenSpot(button.X - 1, button.Y - 1);
                    OpenSpot(button.X - 0, button.Y - 1);
                    OpenSpot(button.X + 1, button.Y - 1);
                    OpenSpot(button.X - 1, button.Y - 0);
                    OpenSpot(button.X - 0, button.Y - 0);
                    OpenSpot(button.X + 1, button.Y - 0);
                    OpenSpot(button.X - 1, button.Y + 1);
                    OpenSpot(button.X - 0, button.Y + 1);
                    OpenSpot(button.X + 1, button.Y + 1);
                }
            }
        }