W aplikacji stworzyłem metodę która sprawdza czy nowo wylosowana pozycja statku i kropek wokoło statku nie nakładają się już z istniejącymi statkiami-kropkami. Statek nie może być obok drugiego statku, a niebieskie kropki dookoła statku generuję na widoku, aby mieć pewność, że komputer „układa” statki prawidłowo 🙂
Jednym z trudniejszych/uciążliwych dla mnie elementów kodu, było napisanie metody która jest odpowiedzialna za rysowanie kropek dookoła statku. Stworzyłem jedną metodę która ma pięć warunków sprawdzających a w każdym z warunków kolejne… zagnieżdżenia w zagnieżdżeniach, nie jest to może ładne rozwiązanie, ale na obecną chwilę nie wymyśliłem innego.
W pierwszej kolejności metoda sprawdza jaki statek ma obsłużyć tzn jakiej jest on długości, 1,2,3,4,5, później sprawdza czy statek jest poziomy, czy pionowy, (poziom row 0) (pion col 1). Na końcu gdy określi powyższe, dla każdej komórki sprawdza czy może wstawić kropkę, jeżeli statek jest w polu A0 to wiadomo, że kropki nie muszą być rysowane poza planszą, sprawdzam to przez instrukcje warunkowe. Metoda nie jest doskonała, ponieważ czasem podczas tworzenia kropek zdarzają się powtórzenia i w tablicy mam dwie albo więcej takich samych wartości. Nim metoda zwróci tablice kropek, przedtem wywołuje metodę która kasuje powtórzenia z tablicy, wtedy zwracam posortowaną tablicę która nie ma w sobie z duplikowanych wartości.
W tym wpisie to tyle, kolejny etap jaki muszę zrobić to panel dla człowieka, który będzie mógł ułożyć statki na planszy 🙂
Poniżej schemat, nie jest idealny, ale pracuje jeszcze nad tym 🙂