Exemplo n.º 1
0
        void Reveal(MineSweeperElement E)
        {
            if (E.TouchingBombsCount == 0 && !E.IsRevealed)
            {
                List <MineSweeperElement> NeedToBeRevealed = new List <MineSweeperElement>();

                try { if (!E.IsRevealed)
                      {
                          NeedToBeRevealed.Add(E);
                      }
                } catch { }

                for (int i = 0; i < NeedToBeRevealed.Count; i++)
                {
                    NeedToBeRevealed[i].IsRevealed = true;
                    List <MineSweeperElement> N = NeedToBeRevealed[i].GetNeigbours();
                    for (int i2 = 0; i2 < N.Count; i2++)
                    {
                        if (!N[i2].IsRevealed && N[i2].TouchingBombsCount == 0 && !NeedToBeRevealed.Contains(N[i2]))
                        {
                            NeedToBeRevealed.Add(N[i2]);
                        }
                    }
                }

                if (NeedToBeRevealed.Count > 1)
                {
                    Assets.Reveal.Play(0.4f * Values.MasterVolume, 0, 0);
                }

                for (int i = 0; i < NeedToBeRevealed.Count; i++)
                {
                    List <MineSweeperElement> N = NeedToBeRevealed[i].GetNeigbours();
                    for (int i2 = 0; i2 < N.Count; i2++)
                    {
                        if (!N[i2].HasBomb)
                        {
                            N[i2].IsRevealed = true;
                        }
                    }
                }
            }
            else
            {
                if (!E.IsRevealed)
                {
                    E.IsRevealed = true;
                    Assets.Reveal.Play(0.2f * Values.MasterVolume, 0, 0);
                }
                else
                {
                    Assets.Error.Play(0.2f * Values.MasterVolume, 0, 0);
                }
            }
        }
Exemplo n.º 2
0
        void Restart(MineSweeperElement FirstClick)
        {
            lock (Grid)
            {
                // Reset Grid
                for (int ix = 0; ix < Grid.GetLength(0); ix++)
                {
                    for (int iy = 0; iy < Grid.GetLength(1); iy++)
                    {
                        Grid[ix, iy] = new MineSweeperElement(ix * ElementSize + Field.X, iy * ElementSize + Field.Y, ElementSize, this);
                    }
                }

                // Add Bombs
                for (int i = 0; i < MineCount; i++)
                {
                    int x = Values.RDM.Next(Grid.GetLength(0));
                    int y = Values.RDM.Next(Grid.GetLength(1));

                    if (Grid[x, y].HasBomb && Grid[x, y] != FirstClick)
                    {
                        i--;
                    }
                    else
                    {
                        Grid[x, y].HasBomb = true;
                    }
                }

                // Update BombCounters
                for (int ix = 0; ix < Grid.GetLength(0); ix++)
                {
                    for (int iy = 0; iy < Grid.GetLength(1); iy++)
                    {
                        Grid[ix, iy].TouchingBombsCount = Grid[ix, iy].GetNeigbourBombCount();
                    }
                }
                Timer = 0;
            }
            Score = 0;
        }
Exemplo n.º 3
0
 public int GetElementGridIndexY(MineSweeperElement E)
 {
     return((E.y - Field.Y) / ElementSize);
 }
Exemplo n.º 4
0
 public int GetElementGridIndexX(MineSweeperElement E)
 {
     return((E.x - Field.X) / ElementSize);
 }