欢迎光临散文网 会员登陆 & 注册

无名杀代码教程No.2——发动条件

2023-07-26 12:21 作者:缘伴随行  | 我要投稿

发动条件是什么?

可以理解成是一个技能在发动前,系统进行判断是否符合要求的一个过滤条件。如果符合,那么这个技能正常发动效果,反之,则不发动。 比如上篇讲的【闭月】,我们如果要加上一点发动条件,效果改为【结束阶段,若你的体力值大于1,你可以摸一张牌】。 那么相较于原版的描述,各位能发现【若……】的不同,而这,就是发动条件。 发动条件一般写在技能效果(

content:function()

)的上面,一般框架为——

filter: function(event, player) {

return …… ;

},

(event, player) 这里面的event和player都是参数,不用管。

return也不用管,固定格式罢了。

要补充的就是return后面的省略号,这才是你要在本技能加上的发动条件内容。 比如【若你的体力值大于1】,已知调取玩家体力值的函数为【player.hp】,大于的函数符号是【>】(英文),那么这个发动条件该怎么写呢? 很简单,如下: filter: function(event, player) { return

player.hp > 1

;

}, 在本技能中,这个

return player.hp > 1

其实也可以写成

if (player.hp > 1) return true

true就是表示条件符合,可以发动技能效果的意思。

那么我们反其道行之,不想让他条件符合,该怎么办呢?

只需要把true换成false即可。这么一来,就变成了——

【if (player.hp > 1) return false】

翻译一下——

【若你的体力值大于1,则此技能不可发动】

但问题来了,技能要求是体力值大于1能发动,那么该怎么改呢? 很简单,动一下脑回路——

if (player.hp <= 1) return false;

return true;

翻译一下——

若你的体力值不大于1,则此技能不可发动。

此技能可以发动。

现在可能有些人就懵了,又是return false,又是return true的,啥意思?

if函数简单来说,就是表一个判断——

【if (player.hp <= 1)】即【如果你的体力值不大于1】

假设这个条件成立,那么执行后面的内容,即【return false】

反之如果你此时的体力值大于1,导致条件不成立,那么【return false】不会执行

我们要知道return false的话这个技能就不能发动了,而return true的话这个技能就又可以发动了。

一旦return了false或者true,这个技能能不能发动就已经定下来了,filter框架下面的代码,系统就不会再继续读取进行判断了。

首先第一段话很好理解,就是你体力值不大于1的时候,技能就肯定不能发动了。毕竟已经return false了,下面的代码不用再看了。

系统在读取你写的代码进行条件判断的时候,都是从上往下的顺序来的。

但如果你此时体力值大于1,if函数的条件不成立,那么不会有【return false】的结果。 系统就会继续往下看。 而下面,也就是第二段,是【return true】。 系统看到return true了,那么结果就是true了,就代表这个技能可以发动了。 于是就执行content:function()里面的内容,发动技能效果了。 而在【闭月】这里,也就是成功的【摸一张牌】了。 总结

好了,总结一下,写一个技能的发动条件,关键是看return后面的是什么,以及条件是否成立。 由于逻辑不仅限于一种,所以这个技能发动条件的写法也是多样的。

①这是一种,很直接了当

②这是另一种,也能成立 课后作业

那么,趁热打铁,来挑一个难度试试吧! ①【闭月】结束阶段,若你的体力值小于3,你可以摸一张牌 ②【闭月】锁定技。准备阶段,若你的体力值大于1且小于4,你摸两张牌 ③【闭月】准备阶段,若你的手牌数大于1且体力值大于1,你可以弃置一张手牌,并摸三张牌

以下是写作过程中会用到的函数:

player.chooseToDiscard(true, 1, 'h'); //玩家必须弃置一张手牌

player.countCards('h'); //玩家当前的手牌数量

&& //连接前后代码的函数,比如【player.hp > 1 && player.hp == 2】翻译即【玩家的体力值大于1并且等于2(==表等于,=一般可用于赋值)】

无名杀代码教程No.2——发动条件的评论 (共 条)

分享到微博请遵守国家法律