> Samouczek
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:
defadd( x, y ):, a następnie, pod spodem i z wcięciem, blok instrukcjiOpcjonalne 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.
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ą?
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!
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
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.