创建自己的函数 (Python)

创建自己的函数 (Python)

> 教程 (Python)

创建函数

我们已经用过好几个函数和方法(setWeaponmoveToward 等)。你也可以用下面的语法,创建属于自己的自定义函数

关键字 return 是可选的,用来让函数返回一个值。在上面的例子中,函数接收参数 xy,并返回它们的和:x + y

在 Python 中,函数必须先定义,后使用。所以要把函数写在文件顶部,放在主代码之前。

创建函数 canFinish(enemy)

我们之前写的判断能否“斩杀”敌人的代码相当长,也不方便复用,所以要把它放进一个函数里。

我们来创建一个自定义函数 canFinish(enemy),它接收一个敌人,并返回一个布尔值,表示能不能把它斩杀。

把斩杀判断的代码复制到一个函数中,写法如下:

现在,我们可以在主代码中使用函数 canFinish,把代码写得简单得多:

你知道吗?把多处重复的同一段代码移进一个函数里,这种做法叫作提取函数。

创建函数 getClosestCellToUseWeapon(enemy)

你可能已经发现,要使用机关枪这把武器(以及之后的激光),你必须和敌人处在同一条直线上。

所以你得走到一个能使用武器的格子上,而不是像用手枪时那样,只是朝敌人靠近。

为此,方法 me.weaponCells(enemy) 会返回所有能对目标使用武器的格子。接下来就要从中挑出一个:最近的那个!

所以我们来创建函数 getClosestCellToUseWeapon,用 for in 循环找出离我们最近的格子:

用它来代替原来的移动:

想更清楚地看到地形和格子,可以在战斗中按 T 键开启战术模式。

在接下来的章节里,我们会讲一些更难的内容。所以不妨花点时间,多摆弄摆弄你的函数和前面学过的知识——光凭这些,就足以让你在排行榜上往上爬了!

❓ 测验

要返回一个数的平方,下面哪个函数写得对?

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

哪个函数能算出列表中的最大值?

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

完整 AI