protected virtual void onKliknieciePola(WspolrzednePola wspolrzednePola)
 {
     if (KliknieciePola != null)
     {
         KliknieciePola(this, new PlanszaEventArgs {
             WspolrzednePola = wspolrzednePola
         });
     }
 }
        public void ZaznaczPodpowiedz(WspolrzednePola wspolrzednePola, StanPola stanPola)
        {
            if (stanPola == StanPola.Puste)
            {
                throw new Exception("Nie można zaznaczyc podpowiedzi dla stanu pustego pola");
            }
            SolidColorBrush pedzelPodpowiedzi = PedzelDlaStanu(stanPola).Lerp(pedzelPustegoPola, 0.5f);

            planszaPrzyciski[wspolrzednePola.Pionowo, wspolrzednePola.Poziomo].Background = pedzelPodpowiedzi;
        }
        private void tworzPlansze(int szerokosc, int wysokosc)
        {
            this.szerokosc = szerokosc;
            this.wysokosc  = wysokosc;

            // podział siatki na wiesze i kolumny
            planszaSiatka.ColumnDefinitions.Clear();
            for (int i = 0; i < szerokosc; i++)
            {
                planszaSiatka.ColumnDefinitions.Add(new ColumnDefinition());
            }
            planszaSiatka.RowDefinitions.Clear();
            for (int j = 0; j < wysokosc; j++)
            {
                planszaSiatka.RowDefinitions.Add(new RowDefinition());
            }

            // towrzenie tablic stanów
            planszaStany = new StanPola[szerokosc, wysokosc];
            for (int i = 0; i < szerokosc; i++)
            {
                for (int j = 0; j < wysokosc; j++)
                {
                    planszaStany[i, j] = StanPola.Puste;
                }
            }

            // tworzenie przycisków
            planszaPrzyciski = new Button[szerokosc, wysokosc];
            for (int i = 0; i < szerokosc; i++)
            {
                for (int j = 0; j < wysokosc; j++)
                {
                    Button przycisk = new Button();
                    przycisk.Margin = new Thickness(0);
                    planszaSiatka.Children.Add(przycisk);
                    Grid.SetColumn(przycisk, i);
                    Grid.SetRow(przycisk, j);
                    przycisk.Tag = new WspolrzednePola {
                        Poziomo = i, Pionowo = j
                    };
                    przycisk.Click += new RoutedEventHandler(
                        (s, e) =>
                    {
                        Button kliknietyPrzycisk    = s as Button;
                        WspolrzednePola wspolrzedne = (WspolrzednePola)kliknietyPrzycisk.Tag;
                        int kliknietePoziomo        = wspolrzedne.Poziomo;
                        int kliknietePionowo        = wspolrzedne.Pionowo;
                        onKliknieciePola(wspolrzedne);
                    });
                    planszaPrzyciski[i, j] = przycisk;
                }
            }
            zmienKoloryWszystkichPrzyciskow();
        }
 public void ZaznaczRuch(WspolrzednePola wspolrzednePola, StanPola stanPola)
 {
     planszaStany[wspolrzednePola.Poziomo, wspolrzednePola.Pionowo] = stanPola;
     planszaPrzyciski[wspolrzednePola.Poziomo, wspolrzednePola.Pionowo].Background = PedzelDlaStanu(stanPola);
 }