コード例 #1
0
        public void RevealCells(int x, int y)
        {
            Cell cellTemp = grid[y][x];

            if (!cellTemp.isMine)
            {
                SafeCell cell = (SafeCell)cellTemp;

                if (!cell.clicked)
                {
                    List <int> validX = new List <int>();
                    List <int> validY = new List <int>();

                    validX.Add(x);
                    validY.Add(y);

                    if (y != 0)
                    {
                        validY.Add(y - 1);
                    }

                    if (y != gridHeight - 1)
                    {
                        validY.Add(y + 1);
                    }

                    if (x != 0)
                    {
                        validX.Add(x - 1);
                    }

                    if (x != gridWidth - 1)
                    {
                        validX.Add(x + 1);
                    }

                    cell.Reveal();

                    if (!cell.flagged)
                    {
                        revealedCells++;
                        cell.clicked = true;
                    }


                    if (cell.bombsNearby == 0)
                    {
                        foreach (int posY in validY)
                        {
                            foreach (int posX in validX)
                            {
                                if (!(posY == y && posX == x))
                                {
                                    RevealCells(posX, posY);
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                lost = true;
                Mine mine = (Mine)cellTemp;
                mine.clicked  = true;
                mine.exploded = true;
            }
        }
コード例 #2
0
        private void CountMines()
        {
            foreach (List <Cell> row in grid) //RESETEAR LAS MINAS A 0
            {
                foreach (Cell cell in row)
                {
                    if (!cell.isMine)
                    {
                        SafeCell safecell = (SafeCell)cell;
                        safecell.bombsNearby = 0;
                    }
                }
            }

            List <int> validX = new List <int>();
            List <int> validY = new List <int>();

            for (int y = 0; y < gridHeight; y++)
            {
                for (int x = 0; x < gridWidth; x++)
                {
                    if (grid[y][x].isMine)
                    {
                        validX.Add(x);
                        validY.Add(y);

                        if (y != 0)
                        {
                            validY.Add(y - 1);
                        }

                        if (y != gridHeight - 1)
                        {
                            validY.Add(y + 1);
                        }
                        if (x != 0)
                        {
                            validX.Add(x - 1);
                        }

                        if (x != gridWidth - 1)
                        {
                            validX.Add(x + 1);
                        }

                        foreach (int posX in validX)
                        {
                            foreach (int posY in validY)
                            {
                                if (!(posY == y && posX == x))
                                {
                                    Cell cell = grid[posY][posX];
                                    if (!cell.isMine)
                                    {
                                        SafeCell safeCell = (SafeCell)cell;
                                        safeCell.bombsNearby++;
                                    }
                                }
                            }
                        }

                        validX = new List <int>();
                        validY = new List <int>();
                    }
                }
            }
        }