//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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); }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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); } }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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; } }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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; } } }
public ref int Get(ref Str_Geminus <int> SomeInd) { return(ref ValuesField[SomeInd.Secundus, SomeInd.Primis]); }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public void Set(ref Str_Geminus <int> SomeInd, int Value) { ValuesField[SomeInd.Secundus, SomeInd.Primis] = Value; }