ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

CardsAgainst游戏机制全解析:黑白卡抽取、多人投票与平局判定的核心规则

CardsAgainst游戏机制全解析:黑白卡抽取、多人投票与平局判定的核心规则 CardsAgainst游戏机制全解析黑白卡抽取、多人投票与平局判定的核心规则【免费下载链接】CardsAgainstAn iOS game for horrible people项目地址: https://gitcode.com/gh_mirrors/ca/CardsAgainstCardsAgainst 是一款基于 iOS 点对点联机Multipeer Connectivity开发的「人类卡牌」风格多人聚会游戏核心玩法是黑白卡抽取组合、全员投票评选、平局手动裁决。本文将从玩家视角拆解它的完整回合流程一张黑卡如何发牌、白卡如何填入空位、投票如何计分、平局由谁拍板以及分数如何统计帮助你快速上手或读懂这款轻量级联机卡牌游戏的设计思路。一、游戏如何开局P2P 联机 黑卡发牌CardsAgainst 不需要服务器所有设备通过局域网点对点直连即可开局。主菜单页会实时显示已连接的玩家列表只要有其他玩家加入「Start Game」按钮才会激活见 MenuViewController.swift。主持人点击开始后同一张黑卡会发给所有玩家但每位玩家各自随机抽取10 张白卡——同样的题目不同的手牌这就是笑点竞争的来源。发牌动作在 MenuViewController.swift 的startGame()中完成let blackCard CardManager.nextCardsWithType(.black).first! let whiteCards CardManager.nextCardsWithType(.white, count: 10)二、黑卡白卡怎么抽随机洗牌与补充机制卡牌数据来源游戏内置两套卡牌 JSON 文件共 2854 张595 黑卡 2259 白卡cards.json —— 完整卡牌库cards_pg13.json —— 温和版36 张默认启用在 CardManager.swift 中pg13开关决定加载哪套牌组加载后按cardType字段拆分成黑卡堆Q与白卡堆A。抽取与自动重洗抽牌逻辑非常简洁从当前堆中随机取一张当某色卡牌堆抽干时自动用原始牌组重新洗牌补满因此游戏理论上可以无限进行不会卡死在无牌状态。if mutable.count 0 { mutable original.sorted { _, _ in arc4random() % 2 0 } // 重洗 } return mutable.removeLast()这段核心逻辑位于 CardManager.swift。三、回合流程填黑卡 → 等全员 → 投票1️⃣ 填写黑卡空位黑卡上的________是待填空位。点击白卡即可填入填入后该白卡从手牌中移除空位以主题色高亮显示若黑卡有多个空位需全部填满才能提交点击已填内容可以撤回最后一张白卡对应事件cancelAnswer。完整流程状态由 GameState.swift 的三态模型驱动pickingCard选卡中→waitingForOthers等待他人提交→pickingWinner投票选胜者。2️⃣ 等待所有玩家提交提交答案后界面会显示「Waiting for xxx, xxx」逐一列出还没交卷的玩家GameViewController.swift。只有全员提交才会进入投票阶段保证了公平性。3️⃣ 多人投票左右滑动翻答案每人一票全员提交后所有玩家的答案被拼成「黑卡 白卡」组合横向分页展示第 1 页是自己的答案之后每一页对应一位玩家的答案左右滑动切换页面底部投票按钮实时显示当前页候选人及已获票数如 Vote for this card (2 votes)点击投票按钮后不可更改按钮随即禁用每投出一票票数以Vote结构体投票人 被投人累计票数文案由 Vote.swift 的stringFromVoteCount生成。四、平局怎么判最后一票者拥有最终裁决权这是 CardsAgainst 最有意思的规则之一。判定逻辑在 GameViewController.swift 的winner计算属性中统计每位玩家的得票数若只有一人有票→ 直接获胜若最高票数并列→ 判定平局返回nil否则得票最高者获胜。触发平局时游戏会弹出「Tie Breaker!」对话框There was a tie! You picked last, so you decide who wins平局你最后投票由你决定谁赢也就是说最后完成投票的玩家成为裁判在所有候选人中点选一位平局即告裁决。这一机制避免了平局死锁也给最后投的策略留了戏剧性空间。五、计分与下一轮胜者得 1 分分数记录在scores字典中下一轮由主持人发一张新黑卡给所有人并为每人的手牌补满到 10 张白卡10 - 当前剩余数随后回到选卡阶段导航栏右上角的「Stats」按钮可随时查看所有人的实时比分。以上发牌、计分逻辑位于 GameViewController.swift。六、机制小结环节规则要点代码位置联机开局P2P 直连至少 2 人才能开始MenuViewController.swift黑卡抽取全员同题随机抽取、抽干自动重洗CardManager.swift白卡手牌每人 10 张随轮次补满GameViewController.swift提交答案多空位须填满可撤回最后一张GameState.swift投票一人一票且不可改实时显示票数Vote.swift平局裁决最后投票者手动指定胜者GameViewController.swift写在最后CardsAgainst 用最少的规则实现了聚会游戏的完整闭环同题异构的黑白卡抽取制造笑点强制全员的投票保证公平最后投票者裁决的平局规则又添了一份反转乐趣。如果你想在局域网里来一场无需联网的卡牌对战这套机制值得直接借鉴。【免费下载链接】CardsAgainstAn iOS game for horrible people项目地址: https://gitcode.com/gh_mirrors/ca/CardsAgainst创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进