> 教程
我们已经用过好几个标准函数(setWeapon、moveToward 等)。你也可以用下面的语法,创建属于自己的自定义函数:
functionsomme( x, y ){ x + y }关键字 return 是可选的,用来让函数返回一个值。在上面的例子中,函数接收参数 x 和 y,并返回它们的和:x + y。
canFinish(enemy)我们之前写的判断能否“斩杀”敌人的代码相当长,也不方便复用,所以要把它放进一个函数里。
我们来创建一个自定义函数 canFinish(enemy),它接收一个敌人,并返回一个布尔值,表示能不能把它斩杀。
把斩杀判断的代码复制到一个函数中,写法如下:
注意:记得指明计算针对的是哪把武器,否则计算结果不对。另外,如果你的行动点足够对敌人开足够多枪、把它打死,函数就返回 true;反之,如果敌人能活下来,就返回 false(这时你或许可以改做别的事)。
现在,我们可以在主代码中使用函数 canFinish,把代码写得简单得多:
你知道吗?把多处重复的同一段代码移进一个函数里,这种做法叫作提取函数。
getClosestCellToUseWeapon(enemy)你可能已经发现,要使用机关枪这把武器(以及之后的激光),你必须和敌人处在同一条直线上。
所以你得走到一个能使用武器的格子上,而不是像用手枪时那样,只是朝敌人靠近。
为此可以使用标准函数 getCellsToUseWeapon,它会返回所有能对目标使用武器的格子。接下来就要从中挑出一个:最近的那个!
所以我们来创建函数 getClosestCellToUseWeapon,用 for in 循环找出离我们最近的格子:
用它来代替原来用 moveToward 的移动:
如果你已经得心应手,还可以自己编写这些函数:
estimateDamage(weapon, enemy):计算武器 weapon 会对 enemy 造成的伤害。getBestWeapon(enemy):在你的武器中找出对 enemy 伤害最高的那一把你还可以:
想更清楚地看到地形和格子,可以在战斗中按 T 键开启战术模式。
在接下来的章节里,我们会讲一些更难的内容。所以不妨花点时间,多摆弄摆弄你的函数和前面学过的知识——光凭这些,就足以让你在排行榜上往上爬了!
要返回一个数的平方,下面哪个函数写得对?
function carre(x) { return x * x } function carre(x) { x * x } function carre() { return x * x } fonction carre(x) { return x * x }
哪个函数能算出列表中的最大值?
function maximum(liste) { var maxi = -99999 for (var e in liste) { if (e > maxi) { maxi = e } } return maxi } function maximum(liste) { var maxi = 99999 for (var e in liste) { if (e < maxi) { maxi = e } } return maxi } function maximum(liste) { var maxi = 99999 for (var e in liste) { if (e > maxi) { maxi = e } } return maxi } function maximum(liste) { var maxi = -99999 for (var e in liste) { if (e < maxi) { maxi = e } } return maxi }
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.