Stwórz swoje funkcje (JavaScript)

Stwórz swoje funkcje

> Samouczek

Tworzenie funkcji

Używaliśmy już kilku funkcji i metod (setWeapon, moveToward itd.). Możesz też tworzyć własne funkcje za pomocą następującej składni:

Opcjonalne słowo kluczowe return sprawia, że funkcja zwraca wartość. W poprzednim przykładzie funkcja przyjmuje parametry x i y i zwraca ich sumę: x + y.

Tworzenie funkcji canFinish(enemy)

Nasz poprzedni kod warunku „dobicia” wroga jest dość długi i trudno go użyć ponownie, więc umieścimy go w funkcji.

Stworzymy własną funkcję canFinish(enemy), która przyjmuje wroga i zwraca wartość logiczną mówiącą, czy możemy go dobić.

Przenosimy kod dobijania do funkcji, zapisanej tak:

Teraz możemy użyć funkcji canFinish w głównym kodzie, który staje się dzięki temu znacznie prostszy:

Czy wiesz, że przeniesienie kodu powtarzającego się w kilku miejscach do jednej funkcji nazywa się faktoryzacją?

Tworzenie funkcji getClosestCellToUseWeapon(enemy)

Być może zauważyłeś, że aby użyć karabinu maszynowego albo później lasera, musisz stać w jednej linii z wrogiem.

Trzeba więc przejść na pole, z którego możesz użyć broni, zamiast po prostu iść w stronę wroga, jak w przypadku pistoletu.

Służy do tego metoda me.weaponCells(enemy), która zwraca wszystkie pola, z których możesz użyć broni na celu. Musimy wybrać jedno z nich: najbliższe!

Stworzymy więc funkcję getClosestCellToUseWeapon i użyjemy pętli for of, aby znaleźć pole położone najbliżej nas:

Używamy jej zamiast dotychczasowego ruchu:

Aby lepiej widzieć teren i jego pola, możesz w trakcie walki włączyć tryb taktyczny klawiszem T.

W kolejnych rozdziałach zajmiemy się trudniejszymi tematami, więc nie spiesz się i poeksperymentuj ze swoimi funkcjami i pojęciami, które do tej pory poznaliśmy: już one wystarczą, żeby piąć się w rankingu!

❓ Quiz

Która z tych funkcji poprawnie zwraca kwadrat liczby?

function square(x) { return x * x } function square(x) { x * x } function square() { return x * x } fonction square(x) { return x * x }

Która funkcja oblicza maksimum listy?

function maximum(list) { let maxi = -99999 for (const e of list) { if (e > maxi) { maxi = e } } return maxi } function maximum(list) { let maxi = 99999 for (const e of list) { if (e < maxi) { maxi = e } } return maxi } function maximum(list) { let maxi = 99999 for (const e of list) { if (e > maxi) { maxi = e } } return maxi } function maximum(list) { let maxi = -99999 for (const e of list) { if (e < maxi) { maxi = e } } return maxi }

Pełna SI