第二节 走进触发器之「奏乐」特技的实现(二)

这一小节,我们用触发器来自己实现一个「奏乐」特技。
开始本节前,我们简单回顾下流程图。

这是一个简易流程图。
①输入i
②令i = 0
③判断i<9结果
④若③为假,进入到⑦;为真进入到⑤
⑤输出i
⑥令i + 1,回到③
⑦结束
流程图包含了编程思想里最主要的几个概念:if(条件真假),for(循环),i = 0(赋值),i+1(自增)
这也是我们今天要用到的几个概念。
先贴完整代码
(可直接复制代码运行)
看下效果

接下来是代码讲解。
奏乐的特技描述是己方部队每回合回复气力5点。
我们上一小节分析了,其中每回合是触发器,已方部队是目标,回复气力5点是行为。
我们对照这个分析找到对应的函数。
通过查文档我们知道111触发器,代表回合开始时。

我们发现这个触发器的括号里还有内容,这个叫做回调参数。是这个触发器触发的时候,给我们的一些额外信息。
比如这里的是pk::force@ force。这个表示势力,也就是游戏里显示的xx军,如刘备军,曹操军。
我们知道,游戏里是每个势力轮流执行1个回合,所以这里的force是表示这个回合是轮到哪个势力。
List是指一类同样类型数据的特殊类型。

如上图,List类型内是Person类型的集合。
List是游戏里常用的数据类型,势力列表,部队列表,武将列表等等都是List类型,对应的也有Array(数组类型),用法跟List一致。
pk::get_unit_list(force) 是游戏内置函数之一,用来获取指定势力的部队列表。
所以整句的意思是

这是for循环。我们需要获取到的部队列表里的每一个部队进行指定的处理。
其中unit_list.count代表list的数量;
i 代表序号,从0开始算起。0代表第0个,1代表第1个......
i += 1 是i加1 后再赋值给i;
从List里取出unit(部队)
ch是制作组写的通用方法,可以在302 全局函数.cpp 查阅,涉及了大多数常规处理。
其中has_skill用来判断部队是否有xx特技,有的话返回true。
add_energy 是给指定部队增加气力。
第一个参数是指定部队;
第二个参数是变化的值,正数则增加,负数则减少。
第三个参数是要不要展示加减动画。如上面的gif图,能看到+22。改为false则看不到这个动画,但实际小姑还是有的。
讲到这,奏乐特技基本实现。