Moja nauka programowania || Tydzień 11 || Raport
📄

Moja nauka programowania || Tydzień 11 || Raport

notion image
 

Witam Cię ponownie!

Ten tydzień okazał się dużym wyzwaniem pod względem znalezienia czasu na naukę. Jak to często bywa, nawet najbardziej starannie zaplanowany grafik może zostać brutalnie zaweryfikowany przez życie 😉 Na mojej drodze do osiągnięcia wszystkich tygodniowych celów związanych z programowaniem pojawił się długi, bo trwający aż 4 dni wyjazd służbowy.

Nadal pracuję nad projektem gry w Warcaby w języku Java. Nawiasem mówiąc, za tydzień Święta! Mam nadzieję, że uda mi się ukończyć całość do Wigilii 🎄 🎅 ❄️

 
notion image

Podsumowanie tygodnia


🚀 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)
notion image

Postęp


  • Logika ruchu Królówki w klasie Player - done
  • Udoskonalenie profilu na LinkedIn - done
  • Logika ruchu pionów komputera - in progress
  • Nowy spis na blog - done

Napotkane trudności


  • Spędzilem tylko 8h z zaplanowanych 12h z kodem
  • Odpuściłem naukę serializacji na rzecz pisania Warcabów
  • Metoda isQueenMovementDiagonal() - sprawdza, czy ruch Królówki jest wykonywany po skosie
    • Wyrzucało mi ArithmeticException, kiedy próbujałem wskoczyć Królówką na pole w “zerowym” wierszu, np. z board [1][1] do board[0][2] . To samo tyczyło się kolumny “zerowej”
    • Wersja poprzednia:
      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; } return isDiagonal; }
    • Udało mi się uprościć logikę stosując jedną z metod klasy Math. Unikam tym samym błedu ArithmeticException i przymusu obsługi wyjątku
    • Wersja poprawiona:
      boolean isQueenMoveDiagonal() { int rowDifference = Math.abs(movementRow - pawnRow); int colDifference = Math.abs(movementColumn - pawnColumn); return rowDifference == colDifference; }
    • Math.abs to metodą, która zwraca wartość bezwzględną liczby (zawsze zwraca nieujemną wartość, niezależnie od tego, czy liczba wejściowa jest dodatnia czy ujemna)
    • int rowDifference = Math.abs(movementRow - pawnRow); oblicza różnicę w rzędach pomiędzy pozycją docelową movementRow i aktualną pozycją pionka pawnRow.
    • int colDifference = Math.abs(movementColumn - pawnColumn); oblicza różnicę w kolumnach pomiędzy pozycją docelową pionka movementColumn i aktualną pozycją pionka pawnColumn
    • return rowDifference == colDifference; zwraca true, jeśli różnica w rzędach jest równa różnicy w kolumnach ( sprawdza, czy ruch jest wykonany po przekątnej, ponieważ na przekątnej różnica w rzędach musi być równa różnicy w kolumnach

Narzędzia i materiały


  • Wspieranie się ChatemGPT

Reflekcje i wnioski


  • Stosować Keep it Simple, Stupid, upraszczać kod jak tylko się da, unikać powtarzania tych samych linijek i izolować fragmenty do osobnych metod
  • Mój plan zawiera zbyt dużo czasochłonnych zadań jednocześnie. James Clear w książce "Atomowe nawyki" sugeruje, aby zadania rozbijać na mniejsze. To ułatwia planowanie
  • Zbyt złożone zadania mogą stać się przytłaczające i trudne do zarządzania
  • Mając zaplanowane mniejsze zadania, możesz łatwiej dostosować się do zmieniających się warunków i dodawać nowe taski, jeśli zajdzie taka potrzeba. To elastyczne podejście pomaga radzić sobie z niespodziewanymi sytuacjami
 
notion image

Cele - kolejny tydzień


🚀 Programowanie

2h dziennie na pisanie Warcabów
5 stron / dzień Java Head First 3rd Edition - serializacja i operacje wejścia/wyjścia (I/O)

🚀 Blog / marka własna

Pierwsza oficjalna publikacja na LinkedIn pod własnym nazwiskiem 🚀
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