在邓艾的指引下,这一次我们要开始使用属于我们自己的牌堆了!大家的干劲都很足呀。首先我们先看一下怎么向一个牌堆添加卡牌吧。
</br>等一下,我们要怎么样才能有自己的牌堆呢?需要创建一个吗?
</br>当然不用。我们只需要想好自己的牌堆叫什么名字,到时候直接使用就可以了。一般来说名字就是一串跟相应的技能有关的小写字母了,由于是自己使用的,所以跟别人的牌堆重名了其实也没太大关系(只是会在辨识上有点小混乱)。
</br>目前已有的牌堆名字,列在下面了:
* 不屈牌堆:buqu,来自技能不屈;
* 田牌堆:field,来自技能屯田;
* 七星牌堆:stars,来自技能七星;
* 权牌堆:power,来自技能权计;
* 醇牌堆:wine,来自技能醇醪;
* 米牌堆:rice,来自技能义舍;
* 梦牌堆:dream,来自技能醉乡;
* 锦牌堆:brocade,来自技能银铃。
</br>比如我们的牌堆叫做光"light",那么只需要在翻译表中写上一句:
`["light"] = "光"`,
</br>那么这个牌堆就可以被游戏接受了。
</br>向一个牌堆添加卡牌,用到的是ServerPlayer的一个成员函数`addToPile`。它的函数原型是:
```
addToPile(pile_name, card, open=true)
addToPile(pile_name, card_id, open=true)
addToPile(pile_name, card_ids, open=true)
```
![](https://img.kancloud.cn/50/54/50549a2d9e0f181014d67a931dac98e9_804x66.png)
</br>其中:
* pile_name就是牌堆的名字,比如刚才说的"light"。
* 第一个原型中的card表示要添加的卡牌对象。
* 第二个原型中的card_id表示要添加的卡牌的编号。
* 第三个原型可以用来添加一串卡牌,里面的card_ids表示所有要添加的卡牌的编号的列表。
* open表示添加到牌堆的时候,卡牌是否公开。像七星的牌就是不公开的,而不屈的牌是要给大家看的。
</br>下面我们来创作这样一个技能:
> 佛光:每当你造成或受到1点伤害后,你可以摸一张牌并将其置于你的武将牌上,称为‘光’。
</br>通常我们可以用`addToPile`的第二个原型,也就是通过编号添加卡牌的方法设计这个技能。不过考虑到技能是按伤害点数发动的,每次伤害可能会有不同的点数,摸不止一张牌,所以最后我们还是选择了第三个原型解决它。当然了,这首先要从摸牌堆摸几张牌才对。
</br>由于摸的这些牌不经过手牌区,直接放到牌堆里,所以我们这次不用那个`drawCards`方法摸牌了,而是Room的另一个成员函数`getNCards`。它的原型是这样的:
```
getNCards(n, update_pile_number=true)
```
![](https://img.kancloud.cn/73/8d/738d191379a0612abac61b712f15c206_602x25.png)
</br>这个函数可以用来获取牌堆顶的n张牌的编号列表,参数`update_pile_number`表示是否在获取列表后更新摸牌堆的卡牌数目,填true表示更新,而false就是不更新,当然默认是true了。
</br>这个技能是按伤害点数添加牌的,我们可以通过data得到伤害点数`count`,然后让`n=count`就行了。代码如下:
![](https://img.kancloud.cn/5a/54/5a548332e557d03c48a9b7e8cd9fd391_679x305.png)
</br>效果:
![](https://img.kancloud.cn/c9/2f/c92fec7537aaa20cb42ab88822d03e7e_420x173.png)
</br>游戏记录:
![](https://img.kancloud.cn/6a/0f/6a0fdf687c5f9c4ff1a07caa039c3c6c_233x100.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 立即胜利