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.