Stwórz swoje funkcje (Python)

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.

W Pythonie funkcja musi być zdefiniowana, zanim zostanie użyta. Dlatego umieszczamy nasze funkcje na początku pliku, przed głównym kodem.

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 dzięki temu pisze się znacznie prościej:

Czy wiesz, że przeniesienie kodu, który pojawia się w kilku miejscach, do 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. Trzeba wybrać jedno z nich: najbliższe!

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

Używamy jej zamiast dotychczasowego ruchu:

Aby lepiej widzieć teren i 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 poznaliśmy: już one wystarczą, żeby piąć się w rankingu!

❓ Quiz

Która funkcja poprawnie zwraca kwadrat liczby?

def square(x): return x * x def square(x): x * x def square(): return x * x function square(x): return x * x

Która funkcja oblicza maksimum listy?

def maximum(my_list): maxi = -99999 for e in my_list: if e > maxi: maxi = e return maxi def maximum(my_list): maxi = 99999 for e in my_list: if e < maxi: maxi = e return maxi def maximum(my_list): maxi = 99999 for e in my_list: if e > maxi: maxi = e return maxi def maximum(my_list): maxi = -99999 for e in my_list: if e < maxi: maxi = e return maxi

Pełna SI