Mam pewną wątpliwość czy szachy zaimplementowałeś dobrze, jest pare pułapek
- bicie w przelocie
- ruch podczas gdy jesteś szachowany
- roszada (można przejść wieżą przez pola szachowane, ale nie królem)
- ruch odsłaniający króla na szacha
- 50ruchów bez bicia piona
- trzykrotne powtórzenie pozycji
Patrzę
if (battleField.fields[origin.x][origin.y].typeOfCounter === "king" || // CASTLING
battleField.fields[origin.x][origin.y].isFirstMove === true)
to jak dobrze pamiętam JS oznacza, że możesz zrobić roszardę jeśli na pytanym polu (origin) stoi król LUB jest to pierwszy ruch (dowolna figura). Czyli można zrobić roszadę jeśli na origin stoi nie tylko król.
Dalej
if (origin.x - destination.x === -2) { // It mean we are doing short castling
...
} else if (origin.x - destination.x === 2) { // It mean we are doing long castling
Inna różnica pól jest przy długiej i krótkiej roszadzie. Po za tym w połączeniu z wyzej wymienionym błędzie jak nie sprawdzasz linii (czy to linia 1 czy 8) to można zrobić w pewnych okolicznościach roszadę: dwoma dowolnymi figurami np. pionkiem b2 i e2 (2 pola różnicy i ich pierwszy ruch).
Sama właściwość isFirstMove nie powinna być umieszczona w metodzie roszady tylko funkcji która wykonuje ruch
battleField.fields[origin.x][origin.y].isFirstMove = false;
Tak samo z pozycją wieży po roszadzie
coordinatesOfRookDestination = {
"x": destination.x + 1, // To the righy of the king
"y": origin.y // Y coordinate doesnt change
};
wieża jest na lewo od króla przy krótkiej roszadzie. (jeśli destination.x to pole dla króla)
Taka rada - jak bedziesz implementował FEN to masz tam stan gry poniekąd i masz zapisane czy były wykonywane roszady.
Przejrzałem tylko jedną metodę :) Ogólnie szachy to dość ciężka gierka do implementowania, szczególnie w JS (brakuje mi tam prawdziwych obiektów). Sam przymierzam się do pisania serwera szachowego, daj znać jak coś to dam więcej rad. Albo dopiszesz potem klienta do mojego serwera jak bedziesz chciał w JS.
Apropo CV parę pomniejszych uwag
- adresu nie trzeba, wystarczy miejsce zamieszkania, Tak samo wystarczy sam wiek a nie data urodzenie (w CV im mniej informacji zbędnych tym lepiej)
- wykształcenie chronologicznie. Zamiast znaku zapytania pisze się planowane zakończenie studiów albo "obecnie".
- Przy studiach informatycznych powinieneś podać szkołę. I jak zawodówkę pogrubiasz (rodzaj i nazwa szkoły) a "kierunek"/"zawód" piszesz pod spodem to trzymaj się tej konwencji też przy studiach. Na górze nazwa szkoły, niżej stopień jaki robisz (zakładam licencjat, ale nie musi to byc oczywiste)
- cel zawodowy ma Cię sprzedać, pokazać, że jesteś konkretny i wiesz czego chcesz. "celem jest ciągły samorozwój" - to nie jest cel tylko raczej metoda do osiągnięcia celu. Jedyny konkret jaki z tego wyłapałem to słowo "front-end" a babki z "HR" to nie są humanistki które lubią czytać oklepane teksty (dlatego listy motywacyjne często filtruja takich "zaangażowanych i otwartych na wszystko" i lepiej ich nie wysyłać jak nie wymagają a Ty nie masz doświadczenia w ich pisaniu). Lepiej napisać "Obecnie studiuję to i to. Chcę zostać tym i tym, dlatego napisałem poniższe projekty. Szukam pracy która pomoże mi się rozwijać w takim kierunku." - możesz sobie to jakoś udekorować, ale to raczej z czynów ma wynikać. Zrobiłeś logistykę a mimo, to studiujesz Infę - może użyj tego. Tylko ta sekcja nie powinna byc za mocno rozciągnięta.
- to co podałeś to nie doświadczenie jako takie. Zmieniłbym to na "Projekty" i oprócz jednego zdaniu o programie napisał coś o użytych technologiach.
- punktowy w doświadczeniu rozjechały Ci się z tekstem
- w umiejętnościach niepotrzebnie powtarzasz słowo znajomość. I jak wyróżniasz JavaScript jako dobrą znajomość to resztę znasz słabo? Ogólnie "dobre pojęcie JavaScript" bym uważał bo trafisz kogoś kto zacznie Cie pytać w eventloopa lub programowania reaktywnego i może wyjść, że jednak nie znasz dobrze. Dlatego na początku polecam same kropki z technologiami jakie znasz (nie z nazwy ale coś w tym zrobiłeś.
- w hobby unikałbym ogólnych zainteresowań takich jak "sport". Pamiętaj im mniej tym lepiej. Lepiej napisać, że lubisz jeździć MTB po single trackach czy coś niż być kolejnym klonem który lubi wyjść od kompa to już jest "hobby" sport. Coś co Cię wyróżni.
- link do github czesto podaje się przy swoich danych, wtedy nie musisz linkować do kazdego projektu (który i tak znajduje się na jednym repo, techniczny który przegląda kod sobie znajdzie). Możesz zrobić stronę startową swojego githuba z linkami do projektów jak potrzebujesz.
Ogólnie zwykle na górze daje się Doświadczenie bo to pierwsza istotna rzecz. Jako ktoś bez doświadczenia możesz zobaczyć na CV funkcjonalne (tylko bez lania wody).