# 运行两个AI对战
cargo run -- --ai 0,1- Desk 卡组 (未来)
- Hand 手卡 (可能性)
- Zone ForEnd 前场 (现在)
- Zone BackEnd 后场
- Cost 费用区(计划区)
- Hp 生命值
- Grave 墓地 (过去)
- RealPoint 真实点数
- 开始
- 抽卡
- 回收
- 主要阶段1
- 战斗
- 主要阶段2
- 结束阶段
- !!!支付费用 为将对应手卡放置到费用区。
如:5费登场。就是将5手卡放入到cost区内。手卡本身不能算作费用。
- !!! 需要支付费用可以使用RealPoint 代替
- !!!在cost区内的卡。依旧可以使用。(可以登场)
- 前场才能战斗。
- 战斗时只能选择对手的卡或者对手玩家。
- 当对手有卡时,只能选择对手的卡进行战斗。
- 与卡战斗成功时(无论输赢)都可以获得一点RealPoint
- 当直接攻击时
- 没有RealPoint时 获得1点RealPoint
- 有RealPoint时可以选择使用n点RealPoint 对对手造成伤害
- 当血量不足时, 使用realPoint可以减少伤害。(强制使用)
- 当血量小于0时玩家失败 游戏结束
- 战斗失败卡进入墓地
- 回收的意思是从Cost区将卡加回到手卡
- 回收阶段 回收卡数为对手站场上 费用最高的卡费用
- 如果这个值比cost区的长度大就全部回收(强制)
- 当这个值不足时,由回收回合的当前玩家选择
- 这个值为0时不回收
- Cost区最多6张卡
- 当Cost区满时,不能通过从手卡放到Cost区来支付费用(而不是进入墓地),换句话说只能支付RealPoint来登场
- 手卡最多为20张
- 超过20张后每次新加入的卡进入弃牌堆
- RealPoint 最高为6。当RealPoint为6后不在获取新的RealPoint并打印已经溢出
- 遍历手牌,检查每张卡是否可支付费用
- 找到所有空的前场区域
- 将可登场的卡片按费用排序(优先低费)
- 若无可用操作(费用不足或无空区域),直接 pass
- 依次登场卡片
- 获取己方可攻击的前场区域
- 获取对手被攻击的区域
- 若无可攻击区域,pass
- 优先攻击对手前场有卡的区域
- 若对手前场无卡,直接攻击对手玩家
- 若有 RealPoint > 0:消耗全部 RealPoint 造成等量伤害
- 否则:放弃伤害,获得 1 点 RealPoint
- 检查是否可支付(费用区未满)
- 若无法支付,取消操作并回滚
- 优先使用手牌支付(不含当前登场卡)
- 手牌不足时,用 RealPoint 补足差额
- 根据目标选择当前玩家或对手的费用区
- 从费用区回收最多
limit张卡到手牌 - 回收数量 = min(费用区长度, limit)