「自制卡牌游戏DIY」战斗抽卡系统(1)

前天 23:0729 浏览主题教程
上一期我们完成了游戏的核心功能——战斗抽卡系统的设计,并将主要设计梗概用思维导图的形式清楚呈现。今天我们要着手开始用触发器编写逻辑,实现这个游戏核心玩法系统。本期车速较快,请站稳扶好!
首先我们先做好前置准备,确保已经有了“标准卡牌”类以及足以存储卡牌所需信息的各个成员变量(P2)
同样的,确认玩家信息类里面已经有了这三个“标准卡牌”数组——已有的卡、入场卡池、场上的卡(P3)。已有的卡是玩家所拥有的全部卡牌,入场卡池是玩家选择带入战斗的12张卡牌,场上的卡则是当前显示在玩家场上的4张卡。前面卡牌包相关的制作已经让玩家能够从卡包中选出带入战场的入场卡池。我们现在要做的,就是完成让玩家从“入场卡池”刷出及刷新“场上的卡”的逻辑。
通过预设值可定义和存储【卡牌状态】这一标准卡牌类的成员变量(P4)
接下来我们来到刷新场上卡牌的逻辑编写,但这时你可能没有什么头绪、不知从何开始写起。一个很好的入局思路是,从卡牌状态的变化及变化条件开始,着手设计相应逻辑(P5)
新建一个刷新场上卡牌的方法,当首次进入战斗或玩家手动刷新时会执行。该方法可将场上4张卡牌全部替换为入场卡池中的未抽取卡牌。通过遍历入场卡池数组,即可检测卡池内未抽取卡牌的数量。当未抽取状态的卡牌不足时,我们将已抽取的卡牌转为未抽取状态——这是为了在刷新时有足够的未抽取卡牌以上场(P6)
下一步是将已打出卡牌置为已抽取(P7)
当玩家刷新时,可能有卡牌被选中但未打出,故这里先将选中的卡牌取消选中,再将这些刷新后的卡统统置为“已打出”,避免刚刷下去的卡牌不会立即再被刷出(P8)
前面这些做好后,就需要提取入场卡池中未抽取的卡牌,然后清空场上的卡并将刷出来的卡予以填充。但仅仅这样还不够,为了让卡牌的抽取具有随机性,还需要一步洗牌的操作(P9)
在洗牌方法中,我们将待洗牌数组作为参数,在遍历该数组的循环里加入随机数索引。将以该索引为下标的元素加入打乱后的数组,并将其从原数组删除。在进行一波遍历后返回打乱后的数组,即可完成洗牌(P10)
完成对未抽取卡牌数组的洗牌并清空场上卡牌后,才正式进入抽取卡牌并放到场上的环节。但是因为我们的卡牌中不仅有部队卡,还有法术卡,所以还要进行分情况讨论。限于篇幅,剩下的内容就且听下回分解啦~感谢看到这里的你,希望我的分享能让你有所收获!我们下期见~
TapTap
TapTap
TapTap
TapTap
TapTap
TapTap
TapTap
TapTap
TapTap
TapTap
1