🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
关于将一张卡牌转换成其它卡牌的事情,上面已经完成得差不多了,不过还是有些问题没有解决。想想看,决斗是一张可以主动使用的卡牌,所以在转换时机上没有多少限制,那么那些不能主动使用的卡牌呢?比如下面这个技能: > 浮云:你可以将一张手牌当作【闪】使用或打出。 (甄姬:飘过……) </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>一切顺利!