Skapa dina funktioner (Python)

Skapa dina funktioner

> Handledning

Skapa en funktion

Vi har redan använt flera funktioner och metoder (setWeapon, moveToward osv.). Du kan också skapa dina egna funktioner, med följande syntax:

Det valfria nyckelordet return får funktionen att returnera ett värde. I exemplet ovan tar funktionen parametrarna x och y och returnerar deras summa: x + y.

I Python måste en funktion definieras innan den används. Därför lägger vi våra funktioner högst upp i filen, före huvudkoden.

Skapa en funktion canFinish(enemy)

Vår tidigare kod för villkoret om att göra slut på fienden är ganska lång och svår att återanvända, så vi lägger den i en funktion.

Vi skapar en egen funktion canFinish(enemy), som tar en fiende och returnerar ett booleskt värde som säger om vi kan göra slut på den eller inte.

Vi kopierar koden för nådastöten till en funktion, som skrivs så här:

Nu kan vi använda vår funktion canFinish i huvudkoden, som blir mycket enklare att skriva:

Visste du det? Att flytta kod som förekommer flera gånger till en funktion kallas faktorisering.

Skapa en funktion getClosestCellToUseWeapon(enemy)

Du har kanske märkt att för att använda Maskingevär eller, längre fram, Laser måste du stå i linje med fienden.

Du måste alltså gå till en ruta därifrån du kan använda ditt vapen, i stället för att bara gå mot fienden som med Pistol.

För det returnerar metoden me.weaponCells(enemy) alla rutor därifrån du kan använda ditt vapen på ett mål. Sedan måste du välja en av dem: den närmaste!

Vi skapar alltså en funktion getClosestCellToUseWeapon och använder en for in-loop för att hitta rutan som ligger på kortast avstånd från oss:

Vi använder den för att ersätta förflyttningen:

För att få bättre överblick över terrängen och rutorna kan du använda taktiskt läge genom att trycka på T under en strid.

I nästa kapitel tar vi oss an svårare ämnen, så ta dig tid att experimentera med dina funktioner och de begrepp vi har gått igenom: de räcker redan för att klättra i rankingen!

❓ Quiz

Vilken funktion returnerar kvadraten av ett tal korrekt?

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

Vilken funktion beräknar maximum av en lista?

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

Komplett AI