private void SapperTile_Clicked(object sender, RoutedEventArgs e) { Button currentBtn = (Button)sender; int pos = panelTile.FindIndex(x => x == currentBtn); Coordinate coordOfClicked = Trans1DTo2D(pos); if (!panelLogic.IsFieldUncovered(coordOfClicked)) { if (!panelLogic.IsBombInside(coordOfClicked)) { int numOfAdjBombs = panelLogic.GetNumberOfAdjacentBombsIn(coordOfClicked); if (numOfAdjBombs > 0) { panelLogic.UncoverOneIn(coordOfClicked); panelTile[Trans2DTo1D(coordOfClicked.horizontal, coordOfClicked.vertical)].Content = numOfAdjBombs.ToString(); panelTile[Trans2DTo1D(coordOfClicked.horizontal, coordOfClicked.vertical)].Background = this.Background; panelTile[Trans2DTo1D(coordOfClicked.horizontal, coordOfClicked.vertical)].Foreground = AssignFontColorToUncovered(numOfAdjBombs); panelTile[Trans2DTo1D(coordOfClicked.horizontal, coordOfClicked.vertical)].FontWeight = FontWeights.Bold; } else { List <Coordinate> lista = new List <Coordinate>(); panelLogic.UncoverZerosAndAdjacentIn(coordOfClicked, ref lista); foreach (var item in lista) { int currentBombNum = panelLogic.GetNumberOfAdjacentBombsIn(item); if (currentBombNum != 0) { panelTile[Trans2DTo1D(item.horizontal, item.vertical)].Content = currentBombNum.ToString(); } else { panelTile[Trans2DTo1D(item.horizontal, item.vertical)].Content = String.Empty; } panelTile[Trans2DTo1D(item.horizontal, item.vertical)].Background = this.Background; panelTile[Trans2DTo1D(item.horizontal, item.vertical)].Foreground = AssignFontColorToUncovered(currentBombNum); panelTile[Trans2DTo1D(item.horizontal, item.vertical)].FontWeight = FontWeights.Bold; } } if (!panelLogic.LeftFieldsUncoveredWithoutBomb()) { ButtonShowMessageDialog_Click(this, e); } } else { panelTile[Trans2DTo1D(coordOfClicked.horizontal, coordOfClicked.vertical)].Content = "*"; panelTile[Trans2DTo1D(coordOfClicked.horizontal, coordOfClicked.vertical)].Background = new SolidColorBrush(Colors.Red); clockTextBox.Stop(null, null); DeactiveAllTiles(); GameFinished?.Invoke(this, EventArgs.Empty); } } }