Battle ship etap 4

Projekt pomału zaczyna już jako tako hulać. Komputer układa statki, użytkownik też już ma możliwość ułożenia statków tak jak chce, oczywiście zachowując przy tym wszystkie zasady gry w statki 🙂 ale do rzeczy.

W obecnej wersji gry, zrobiłem panel dla użytkownika, aby ten mógł wybrać statek od jedno masztowego do pięciomasztowego, podał pozycje poziomo lub pionowo oraz wpisał komórkę od której ma rozpocząć się „budowa” statku na planszy. Dodałem również kilka validatorów, użytkownik nie może ustawić statku tak, aby jakakolwiek jego część wychodziła poza planszę oraz nowo powstały statek nie może nałożyć się na już istniejący.

 

Pisząc mechanizm dla użytkownika miałem trochę mętlik jak reprezentować pola planszy gracza. Plansza komputera posiada dwie cyfry jako jedna komórka. Gracz posiada trzy cyfry, pierwsze dwie takie same jak u komputera a jako trzecią cyfrę dodałem po prostu liczbę jeden. Dzięki takiemu rozwiązaniu wiem, jak odróżnić planszę i w którą planszę ma strzelać komputer w przyszłości

 

Pokaże na przykładzie, tak wygląda komórka planszy komputera

 <th id="02"></th>

Jest to pole A2

A tak wygląda pole planszy gracza

 <th id="021"></th>

Jest to również pole A2, ale w kodzie plansze gracza rozpoznaję dzięki trzeciej cyfrze.

W kolejnych rozważaniach, uznałem, że warto pisać drobne komentarze nad metodami, gdy patrzę na kod po paru dniach przerwy trochę sam czuję się przez chwile zagubiony, więc zacznę stosować praktykę pisania co robi dany kod. Dzięki takiemu rozwiązaniu mam nadzieje, że gdy spojrzę na to za miesiąc, będę mógł szybciej się odnaleźć w tym spaghetti 🙂

 

Do rzecz, dużo czasu spędziłem nad pisaniem metody, która sprawdza czy wybrany statek został już wybrany przez użytkownika aby ustawić go na planszy czy nie. Gdy przykładowo cztery statki jedno masztowe zostały utworzone na planszy należało zablokować możliwość wybrania po raz piąty statku jednomasztowego, wypociny można zobaczyć na githubie. Nie wiem czy taki kod jest elegancki, ale pomału czas zaczyna gonić z projektem a za oknem co raz więcej słońca co nie wróży dla mnie najlepiej 🙂

 

Zauważyłem, że pisanie testów dla niektórych funkcji sprawia mi problem, nie bardzo wiem jak mógłbym stworzyć przypadek wyświetlania przykładowo czerwonego kwadraciku na planszy przy użyciu JasmineJS. Kod związany z nazwawidokuView jest nie testowany w moim projekcie, będę próbował to zmienić, ale obecnie jest to cel na później. Teraz spróbuję trochę zrefaktoryzować kod jeżeli mi się uda i rozpocząć granie 🙂 aby użytkownik po oddaniu strzału do komputera, otrzymał odpowiedź w postaci strzału przez komputer do użytkownika.

 

Commity wrzucone na githuba Mar 31, 2017 i Apr 3, 2017 dotyczą tego posta 🙂

Poniżej schemat:

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*