关于将一张卡牌转换成其它卡牌的事情,上面已经完成得差不多了,不过还是有些问题没有解决。想想看,决斗是一张可以主动使用的卡牌,所以在转换时机上没有多少限制,那么那些不能主动使用的卡牌呢?比如下面这个技能:
> 浮云:你可以将一张手牌当作【闪】使用或打出。
(甄姬:飘过……)
</br>按照主动卡牌转换的惯例,我们可以写出如下的代码:
![](https://img.kancloud.cn/32/6f/326f642ab5b21d295fe5db4ba7e0bf24_742x459.png)
</br>啊,这里`isEquipped()`是Card的一个成员函数,可以用来判定一张卡牌是否被装备在了装备区,没有被装备的卡牌就算手牌了。
![](https://img.kancloud.cn/dd/ad/ddadd430f36fd184db1f2c11e552b2f2_326x26.png)
</br>但是没听说过有人可以在出牌阶段主动用闪的,所以这技能代码要改一改。(张角:别改了,直接给我吧!我拿黄天来换!编者:一边儿呆着去……)
</br>怎么改才好?想到之前被我们忽略掉的那三个enabled_at系列函数了么?没错,被动卡牌的转换,就是在它们的协助下才可以顺利进行的。
</br>由于我们不会主动使用闪,所以`enabled_at_play`函数的返回值就不能用默认的true了,要改成false。
</br>由于闪是用来响应的,所以`enabled_at_response`函数的返回值也不能用默认的false了,还要改……不对,不是说所有的响应都可以用闪解决的啊,只有响应杀和万箭齐发的时候才会出闪啊,所以不能直接返回true,需要做一个判断。
</br>这就是为什么比起`enabled_at_play`,`enabled_at_response`还多了一个参数pattern的原因了。原来这个pattern指的就是响应所需要的卡牌类型的意思。当pattern的值为"jink"(闪)的时候,就可以返回true了,否则还要返回false。
</br>至于最后那个`enabled_at_nullification`,貌似闪和无懈可击没什么关系吧,所以还是不管它好了。
</br>所以,实现这个技能的最终代码就是这样的:
![](https://img.kancloud.cn/ac/e4/ace457523b95d31635b568965a5fbf61_738x590.png)
</br>到游戏中体验一下吧!
![](https://img.kancloud.cn/74/b4/74b47f03bf08ec3ac87b13f5e87ba88b_220x83.png)
</br>一切顺利!
- 编写说明
- 第一章 创建一个新武将
- 1.1 开发环境准备
- 1.2 创建一个新的武将扩展包
- 1.3 创建我们的新武将
- 第二章 添加技能
- 第三章 武将美化
- 3.1 美化环境准备
- 3.2 添加武将卡牌
- 3.3 添加武将头像
- 3.4 添加武将标签
- 第四章 创建一个新技能
- 第五章 添加音效
- 5.1 打造自己的声音工作室
- 5.2 添加技能使用音效
- 5.3 添加武将阵亡音效
- 第六章 添加提示信息
- 6.1 添加代码注释
- 6.2 显示提示信息
- 6.3 启动全屏信息特效
- 第七章 武将变更
- 第八章 启用AI
- 8.1 创建我们的AI文件
- 8.2 真实的AI
- 8.3 动手写AI
- 第九章 修改距离
- 第十章 技能管理
- 10.1 技能判定
- 10.2 创建技能
- 10.3 获得技能
- 10.4 失去技能
- 第十一章 修改手牌上限
- 第十二章 体力变更
- 12.1 流失体力
- 12.2 制造伤害
- 13.3 恢复体力
- 12.4 流失体力上限
- 12.5 增长体力上限
- 第十三章 游戏进程的变更
- 13.1 创建阶段触发技能
- 13.2 跳过回合阶段
- 13.3 插入一个额外的回合阶段
- 13.4 启用翻面
- 13.5 获得一个额外的回合
- 第十四章 启用标记(Mark)
- 14.1 添加标记
- 14.2 获得标记
- 14.3 失去标记
- 14.4 查看标记数目
- 第十五章 卡牌转换
- 15.1 主动牌的转换
- 15.2 被动牌的转换
- 第十六章 卡牌传递
- 16.1 创建摸牌技能
- 16.2 游戏中摸牌
- 16.3 游戏中弃牌
- 16.4 从其他武将处获得牌
- 16.5 判断目标区域是否有牌
- 16.6 移动场上的牌
- 第十七章 用牌实现技能效果
- 第十八章 启用标志(Flag)
- 第十九章 涉足判定领域
- 19.1 启用判定
- 19.2 更改判定
- 19.3 获得判定牌
- 第二十章 私家牌堆
- 20.1 向牌堆中添加牌
- 20.2 查看牌堆中牌的数量
- 20.3 从牌堆中移除牌
- 第二十一章 牌的锁定
- 第二十二章 免疫牌
- 第二十三章 让房间提供牌
- 23.1 提供主动牌
- 23.2 提供被动牌
- 第二十四章 启用标签(Tag)
- 第二十五章 濒死结算
- 第二十六章 交换座次
- 第二十七章 创建主公技
- 27.1 创建由主公发起的主公技
- 27.2 创建由他人发起的主公技
- 第二十八章 强力技能
- 28.1 直接死亡
- 28.2 改换身份
- 28.3 原地复活
- 28.4 立即胜利