コード例 #1
0
ファイル: GameField.cs プロジェクト: Mukulla/Mnier
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        int CheckMines(ref Str_Geminus <int> Indexes001, ref int[,] ValuesField001)
        {
            int CountMines001 = 0;

            Str_Geminus <int> TempoKoords  = Func.Set(0, 0);
            Str_Geminus <int> TotalIndexes = Func.Set(0, 0);

            for (int i = 0; i < LookAround.Length; ++i)
            {
                TempoKoords           = Indexes001;
                TempoKoords.Secundus += LookAround[i].Secundus;
                TempoKoords.Primis   += LookAround[i].Primis;

                Func.CheckClausaAream(ref TempoKoords.Secundus, 0, Glo.GSizes.Secundus - 1);
                Func.CheckClausaAream(ref TempoKoords.Primis, 0, Glo.GSizes.Primis - 1);

                TotalIndexes = TempoKoords;

                if (Get(ref TotalIndexes) == (int)En_MineStates.Mine)
                {
                    ++CountMines001;
                }
            }

            return(CountMines001);
        }
コード例 #2
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        void SearchAround(ref Button CurrentBu002, ref Str_Geminus <int> Indexes002)
        {
            CurrentBu002.BackColor = ButtonColors[(int)EnButtonStates.Opened];
            //CurrentBu002.Enabled = false;
            Field001.Set(ref Indexes002, (int)En_MineStates.Copyed);

            Str_Geminus <int> Tempo = Func.Set(0, 0);

            //Проверяем блоки вокруг
            for (int i = 0; i < Field001.GetLooAr().Length; ++i)
            {
                //Tempo = Indexes002;
                Tempo.Secundus = Indexes002.Secundus + Field001.GetLooAr()[i].Secundus;
                Tempo.Primis   = Indexes002.Primis + Field001.GetLooAr()[i].Primis;

                Func.CheckClausaAream(ref Tempo.Secundus, 0, Glo.GSizes.Secundus - 1);
                Func.CheckClausaAream(ref Tempo.Primis, 0, Glo.GSizes.Primis - 1);

                if (Field001.Get(ref Tempo) == (int)En_MineStates.Copyed)
                {
                    continue;
                }

                OpenQuad(ref ArrayButtons[Tempo.Secundus, Tempo.Primis], ref Tempo);
            }
        }
コード例 #3
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        void OpenQuad(ref Button CurrentBu001, ref Str_Geminus <int> Indexes001)
        {
            if (Field001.Get(ref Indexes001) == (int)En_MineStates.Copyed)
            {
                return;
            }
            --Glo.LiberumElementis;
            //toolStripStatusLabel1.Text = Glo.LiberumElementis.ToString();
            if (Glo.LiberumElementis <= 0)
            {
                PaintMines(true);
                toolStripStatusLabel1.Text = "Победа";
                timer1.Enabled             = false;
                GameOver = true;
            }

            //CurrentBu001.Enabled = false;
            if (Field001.Get(ref Indexes001) == (int)En_MineStates.Mine)
            {
                //CurrentBu001.Text = Field001.Get(ref Indexes001).ToString();
                PaintMines(false);
                CurrentBu001.BackColor     = ButtonColors[(int)EnButtonStates.Exploded];
                toolStripStatusLabel1.Text = "Поражение";
                timer1.Enabled             = false;
                GameOver = true;
            }
            else
            {
                if (Field001.Get(ref Indexes001) == (int)En_MineStates.Spacer)
                {
                    SearchAround(ref CurrentBu001, ref Indexes001);

                    return;
                }

                CurrentBu001.BackColor = ButtonColors[(int)EnButtonStates.Numered];
                CurrentBu001.Text      = Field001.Get(ref Indexes001).ToString();
                PaintNumbers(ref CurrentBu001, Field001.Get(ref Indexes001));

                Field001.Set(ref Indexes001, (int)En_MineStates.Copyed);
                //CurrentBu001.Enabled = false;
                //--Glo.LiberumElementis;
            }
        }
コード例 #4
0
ファイル: GameField.cs プロジェクト: Mukulla/Mnier
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        void PlaceMines()
        {
            int Mine = -1;
            Str_Geminus <int> Tempo = Func.Set(0, 0);
            int i = 0, j = 0;
            var Rnd = new Random();

            int Iterator = 0;

            while (Iterator < Glo.CountMines)
            {
                Tempo.Secundus = Rnd.Next(0, Glo.GSizes.Secundus);
                Tempo.Primis   = Rnd.Next(0, Glo.GSizes.Primis);

                if (ValuesField[Tempo.Secundus, Tempo.Primis] != Mine)
                {
                    ValuesField[Tempo.Secundus, Tempo.Primis] = Mine;
                    MinesKoords.Add(Tempo);
                    ++Iterator;
                }
            }
        }
コード例 #5
0
ファイル: GameField.cs プロジェクト: Mukulla/Mnier
 public ref int Get(ref Str_Geminus <int> SomeInd)
 {
     return(ref ValuesField[SomeInd.Secundus, SomeInd.Primis]);
 }
コード例 #6
0
ファイル: GameField.cs プロジェクト: Mukulla/Mnier
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 public void Set(ref Str_Geminus <int> SomeInd, int Value)
 {
     ValuesField[SomeInd.Secundus, SomeInd.Primis] = Value;
 }