/// <summary> /// Initialize Grid with fields and start game /// </summary> public void InitGame() { Random randNum = new Random(); int Min = 0; int Max = this.dimensions; this.clickedFields = 0; this.info.Visibility = Visibility.Hidden; this.time.Visibility = Visibility.Hidden; this.startTime = DateTime.Now.ToString("h:mm:ss tt"); randomBombs = Point.GenerateRandomPoints(Min, Max, Convert.ToInt32(this.dimensions * this.mode)); for (int x = 0; x < this.dimensions; x++) { this.mainGrid.ColumnDefinitions.Add(new ColumnDefinition()); this.mainGrid.RowDefinitions.Add(new RowDefinition()); for (int y = 0; y < this.dimensions; y++) { Field field = Field.AddButton(x, y, this.mainGrid, fields.Count()); field.Button.Click += OnFieldClick; field.Button.MouseDown += OnFieldRightClick; fields.Add(field); } } foreach (Field field in fields) { Point buttonPoint = field.Point; Button button = field.Button; //@todo optimize foreach (Point randomBomb in randomBombs) { bool found = randomBomb.X == buttonPoint.X && randomBomb.Y == buttonPoint.Y; if (found) { field.State = new State(0, 0, true); } } if (field.State == null) { field.State = new State(0, 0, false); } } foreach (Field field in fields) { Point buttonPoint = field.Point; int bombsAround = Point.GetBombsAround(buttonPoint, randomBombs); if (bombsAround > 0) { field.State.Number = bombsAround; } else { field.State.Number = null; } field.Button.Foreground = Brushes.Black; } this.bombFlags = this.randomBombs.Count(); ShowCurrentFlags(); }