public void button_right_pressed(Minesweeper_Button button)
 {
     // Bei rechts Klick Knopf markieren und Bombencounter aktualisieren
     // Knopfzustand wechseln, falls noch nicht geoeffnet: markieren, nicht markieren oder vielleicht markieren
     // Text und Bild werden passend gesetzt
     button.mark();
     gui.show_flag(button.get_pos().x, button.get_pos().y, button.get_state());
     gui.set_bomb_counter(num_bombs - count_marked());
 }
 // Rekursives aufdecken
 private void aufdecken_und_nachbarn_oeffnen(Minesweeper_Button button)
 {
     // Feld aufdecken und eventuell rekursiv Nachbarn auch noch aufdecken
     if (button.get_is_bomb() == false && button.get_is_opened() == false)
     {
         // Wenn Feld keine Bombe ist, Anzahl der Bomben im Umkreis auf Feld schreiben ...
         Pos pos = button.get_pos();
         int num_bombs_around = get_bombs_around_button(button);
         button.open();
         gui.aufdecken(pos.x, pos.y, button.get_is_bomb(), num_bombs_around);
         if (num_bombs_around == 0)
         {
             // rekursiv die direkten und diagonalen Nachbarn aufdecken
             foreach (Minesweeper_Button btn in get_buttons_around_button(button))
             {
                 aufdecken_und_nachbarn_oeffnen(btn);
             }
         }
     }
 }
        private List <Minesweeper_Button> get_buttons_around_button(Minesweeper_Button button)
        {
            // Gibt eine Liste mit den um einen Knopf herumliegenden Knoepfe zurueck
            List <Minesweeper_Button> surrounding_buttons = new List <Minesweeper_Button>();
            Pos pos = button.get_pos();

            for (int x = pos.x - 1; x <= pos.x + 1; x++)
            {
                if (0 <= x && x < x_size)
                {
                    for (int y = pos.y - 1; y <= pos.y + 1; y++)
                    {
                        if (0 <= y && y < y_size && (x != pos.x || y != pos.y))
                        {
                            surrounding_buttons.Add(buttons[x, y]);
                        }
                    }
                }
            }
            return(surrounding_buttons);
        }