Witam,
podczas pisania projektu na zaliczenie natknąłem się na błąd, którego nie potrafię poprawić. Po dłuugim debuggingu odkryłem, gdzie jest, ale nie mam pojęcie dlaczego występuje, no i jak go zlikwidować.

Oto kompletny kod: http://paste.org/pastebin/view/13332 , oczywiście nie trzeba przeglądać całego żeby zrozumieć o co mi chodzi ;) .

Problem jest z pętlą w liniach 369-380. Nawet pojedyncze wykonanie komendy

ruchy[n++] = new Ruch(i, j, kolor, plansza);

sprawia, że w tablica "Pola" globalnej zmiennej "plansza" zapełnia się wartościami 'C' , podczas gdy powinny być w niej (chyba) wartości 'P', czyli domyślne . Sprawdziłem to poprzez umieszczanie w różnych miejscach kodu komendy

if (plansza.Pola[0, 3] == 'C') label2.Text += 'T';
            else label2.Text += 'N';

i okazało się, że winna jest właśnie ww. pętla. Następnie postanowiłem sprawdzić konstruktor klasy "Ruch" poprzez umieszczenie w nim pola "test" , umieszczanie w różnych miejscach konstruktora komendy

if (plansza.Pola[0, 3] == 'C') test = 'T';
                else test = 'N';

, i wypisanie tej zmiennej na ekran poprzez

if (i == 0 && j == 0 && ruchy[n - 1].test == 'T') label2.Text += "BLE";
                        else if (i == 0 && j == 0) label2.Text += "GIT";

Ku mojemu zdziwieniu, nawet gdy ww. linijkę umieściłem na końcu konstruktora, na ekranie pojawiało się "GIT" , czyli że niby wszystko jest okej... a nie jest okej, bo przecież tablica "Pola" zmiennej "plansza" wypełnia się nieodpowiednimi wartościami!

Wiem, że będzie potrzeba chwilki żeby zrozumieć, co tu napisałem (mimo że starałem się opisać problem precyzyjnie) , ale mimo to proszę o pomoc - już naprawdę długo nad tym siedzę i nic wymyślić nie mogę.

Aktualizacja: Problem rozwiązany.