Commit z dnia Apr 10, 2017 i Apr 13, 2017
W tym wpisie:
-Stworzony controller do strzelania przez komputer
-Komputer strzela do gracza
-Komputer zapamiętuję statek który trafił
-Zapamiętywanie wszystkich strzałów komputera
-testy jasmine
Na samym początku stworzyłem kontroller/model/widok w którym odbywają się akcję związane z generowaniem wszystkich możliwych strzałów czyli 99 komórek, generowaniem pola w które komputer ma strzelić, zapamiętanie strzału, usunięcie z wszystkich możliwych strzałów strzału już oddanego, oznaczanie trafionego statku.
Dzięki temu program może losować wartości tylko z określonej puli danych, oraz dzięki usuwaniu z puli pola które zostało wylosowane, wiem, że nie nastąpi sytuacja gdzie komputer odda więcej niż jeden strzał w to samo pole. Ktoś spyta po co zapamiętywać oddane strzały skoro wiemy, że komputer losuje wartości już z ściśle określonej puli. Zapisuję oddane strzały komputera do osobnej tablicy aby podczas debugu mieć pewność, że wszystkie strzały jakie zostały oddane na pewno mają wartości takie same jak w puli. Ten element co prawda można pominąć, ale z drugiej strony będę jeszcze rozważać logikę w której komputer jeśli trafi w statek gracza, to ma zapamiętać, że trafił w poprzedniej turze statek wroga i kolejny strzał ma być w obrębie wcześniej trafionego pola. Przy czym sprawdzając inne możliwości typu, nie ma sensu strzelać w pole przykładowo A5 skoro w A4 jest inny statek, a my trafiliśmy w A6. Z zasad gry wiadomo, że statki nie mogą być obok siebie, musi być przerwa jednej komórki między nimi, więc aby nie marnować strzału komputera na darmo, lepiej pozwolić mu na „pomyślenie” przy wyborze komórki, dzięki temu grą będzie trudniejsza 🙂 ale to jest dopiero w planach.
Oczywiście dodałem testy jednostkowe aby aplikacja wyglądała „porządniej” 🙂
W planach mam jak wcześniej wspomniałem, stworzeniu logiki która pozwoli komputerowi na lepsze i bardziej przemyślane strzały gdy strzeli w statek wroga.
Kolejną rzeczą będzie zaprojektowanie bardziej intuicyjnego interface’u. Wyobrażam sobie to tak, że przeciągamy z specjalnego pola już wygenerowane statki i układamy pojedynczo na planszy poziomo albo pionowo. Dodanie więcej komunikatów wyjaśniających sytuację na planszy. Jak wiadomo, każda aplikacja powinna być idioto odporna więc będę dążyć do tego aby żadnej użytkownik nie miał problemu z graniem 🙂
Pozdro:)