Skip to content

zzhgithub/card-core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

游戏的核心

测试命令

# 运行两个AI对战
cargo run -- --ai 0,1

GameState For EveyPlayer

  • Desk 卡组 (未来)
  • Hand 手卡 (可能性)
  • Zone ForEnd 前场 (现在)
  • Zone BackEnd 后场
  • Cost 费用区(计划区)
  • Hp 生命值
  • Grave 墓地 (过去)
  • RealPoint 真实点数

GamePhase 游戏阶段

  • 开始
  • 抽卡
  • 回收
  • 主要阶段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并打印已经溢出

AI

主要阶段 (Main/Main2)

  1. 遍历手牌,检查每张卡是否可支付费用
  2. 找到所有空的前场区域
  3. 将可登场的卡片按费用排序(优先低费)
  4. 若无可用操作(费用不足或无空区域),直接 pass
  5. 依次登场卡片

战斗阶段 (Fight)

  1. 获取己方可攻击的前场区域
  2. 获取对手被攻击的区域
  3. 若无可攻击区域,pass
  4. 优先攻击对手前场有卡的区域
  5. 若对手前场无卡,直接攻击对手玩家

战斗伤害选择

  • 若有 RealPoint > 0:消耗全部 RealPoint 造成等量伤害
  • 否则:放弃伤害,获得 1 点 RealPoint

费用支付

  1. 检查是否可支付(费用区未满)
  2. 若无法支付,取消操作并回滚
  3. 优先使用手牌支付(不含当前登场卡)
  4. 手牌不足时,用 RealPoint 补足差额

回收阶段

  1. 根据目标选择当前玩家或对手的费用区
  2. 从费用区回收最多 limit 张卡到手牌
  3. 回收数量 = min(费用区长度, limit)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors