Witam Cię ponownie!
Warcaby ciąg dalszy. Gdy rozpoczynałem pisać ten mini projekty, założyłem, że stworzę logikę jedynie dla “zwykłych” pionków. Uznałem, iż logika poruszania się Królówki po planszy może być zbyt skomplikowna. Jej ruchy są bardziej złożone w stosunku do standardowych pionków. Nie mówiąc już o biciu tych pionków przez ową Królówkę…
Koniec końców jest taki, że wbrew moim początkowym obiekcjom postanowiłem zmierzyć się z Królówką 😁 Jak skończyła się ta historia? Zapraszam do lektury poniżej!
Podsumowanie tygodnia
🚀 Programowanie
Poświęcić 2h dziennie na pisanie warcabów
Kontynować naukę serializacji i operacji wejścia/wyjścia plików (I/O) - książka Java Head First 3rd Edition
🚀 Blog / marka własna
Poniedziałkowa publikacja na LinkedIn
Artykuł na Blog - pisać min. 1 akapit dziennie
🚀 Szlifowanie skilli:
Praca głęboka - minimum 2h dziennie
Zasada 30% teorii / 70% pisania kodu
Praca nad KISS
Ksiżąka “Atomowe nawyki”
Angielski / Hiszpański (wymiennie, minimum 30 min dziennie)
Postęp w tym tygodniu
- Przygotowuje się do publikowania treści pod własnym nazwiskiem na
LinkedIn
- 2h dziennie pisania kodu Warcabów -
done
- Przeważająca część logiki Królówki (poruszanie się po skosie oraz zbijanie pionków) -
done
- Przerobiłem część rozdziału z książki java Head First 3rd Edition o serializacji i operacji wejścia/wyjścia plików (I/O)
- Ukoczyłem czytanie książki “
Atomowe Nawyki
”
Napotkane trudności
- Wyrzuca mi
ArithmeticException
, kiedy próbuję wskoczyć Królówką na pole w “zerowym” wierszu, np. zboard [1][1]
doboard[0][2]
. To samo tyczy się kolumny “zerowej”
- Co jest ciekawe nie ma takiego problemu, gdy chcę wskoczyć na to samo pole
board[0][2]
, ale z polaboard [1][3]
- Cała sytuacja spowowana jest logiką w metodzie
isQueenMovementDiagonal()
. Aby sprawdzić, czy ruch jest skośny wykorzystuje stosunekmovementRow / movementColunm
do zmodyfikowanego początkowego położeniaKrólówki
(logika modyfikcji jest zależna od kierunku ruchu). Kod poniżej:
boolean isQueenMovementDiagonal() { boolean isDiagonal = false; if ((movementRow / movementColumn) == ((pawnRow + 1) / (pawnColumn + 1)) || (movementRow / movementColumn) == ((pawnRow + 1) / (pawnColumn - 1)) || (movementRow / movementColumn) == ((pawnRow - 1) / (pawnColumn - 1)) || (movementRow / movementColumn) == ((pawnRow - 1) / (pawnColumn + 1))) { isDiagonal = true; } else{ // ArithmeticException } return isDiagonal; }
KISS
- postanowiłem skupić się na logice. Gdy znajde już rozwiąznie, to wtedy wezmę się za porządkowanie kodu
- Nie zacząłem pisać żadnego artykułu na blogu z powodu zabawy z Warcabami
Narzędzia i materiały
- Wspieranie się ChatemGPT
- Książka Head First Java 3rd Edition
Reflekcje i wnioski
- Nie planuje zdań do wykonania w systemie godzinym, ale jako listę tasków do odhaczania. Jeśli nie uda się zrealizować jakiegoś zadania - przekładam na kolejny dzień
- W Warcabach wyrzuca mi
ArithmeticException
- to wspaniała okazja, aby pobawić się z obsługą wyjątków, czego nie robiłem wiele razy do tej pory
- Jeśli nie uda mi się rozwiązać powyższego problemu, to ewentualną opcją jest po prostu zmiana numeracji wierszy (zamiast od 0, zacznę numerację od 1)
- Ustalanie sobie deadlinów na wykonanie określonego zadania to wg mnie kwestia bardzo indywiduwalna. Możesz ustalić sobie, że oddasz Warcaby do końca tygodnia, a w trakcie pisania okaże się, że logika zajmie CI dużo więcej czasu niż zakładałeś
- Zamiast deadlinów ustalam sobie zakres pracy np:
- przeczytaj 10 stron dziennie
- pisz kod 2h dziennie
- napisz 1 akapit na blog dziennie
Cele - kolejny tydzień
🚀 Programowanie
2h dziennie na pisanie Warcabów
10 stron/dzień książki Java Head First 3rd Edition - serializacja i operacje wejścia/wyjścia (I/O)
🚀 Blog / marka własna
Poniedziałkowa publikacja na LinkedIn
Poprawić profil na LinkedIn
Artykuł na Blog - pisać min. 1 akapit dziennie
🚀 Szlifowanie skilli:
Praca głęboka - minimum 2h dziennie
Zasada 30% teorii / 70% pisania kodu
Praca nad KISS
Angielski / Hiszpański (wymiennie, minimum 30 min dziennie)
Śledź mnie na LinkedIn:
Newsletter
Jeśli masz jakieś sugestie lub pytania, proszę napisz do mnie wiadomość: kuba@javampokaze.pl