酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

出牌阶段限一次,你可以弃置任意张牌并摸等量的牌,若你以此法弃置了所有手牌,你多摸一张牌。若你以此法弃置了所有手牌且弃置牌颜色均相同,本技能视为未发动过。 JavaScript

```javascript / * 出牌阶段限一次技能实现 * @param {Player} player - 当前玩家对象 * @param {Card[]} discardedCards - 要弃置的牌数组 */ function useSkill(player, discardedCards) { // 检查是否在出牌阶段且技能未使用过 if (!isInPlayPhase() || player.hasUsedSkill) { return false; } const originalHandCount = player.hand.length; const discardCount = discardedCards.length; // 弃牌并摸牌 player.discard(discardedCards); player.draw(discardCount); // 检查是否弃光了所有手牌 if (discardCount === originalHandCount) { player.draw(1); // 多摸一张 // 检查弃牌颜色是否全部相同 const firstColor = discardedCards[0].color; const allSameColor = discardedCards.every(card => card.color === firstColor); if (allSameColor) { player.hasUsedSkill = false; // 视为未发动过 } } player.hasUsedSkill = true; return true; } // 辅助函数:检查是否在出牌阶段 function isInPlayPhase() { return game.phase === 'play'; } ``` 代码逻辑说明: 1. 技能使用前提条件检查(出牌阶段且未使用过) 2. 记录初始手牌数用于后续判断 3. 执行弃牌和摸牌的基本逻辑 4. 弃光手牌时的额外摸牌处理 5. 弃牌颜色检查及技能重置逻辑 三条额外需要注意的逻辑点: - 需要确保discardedCards数组中的牌确实属于玩家手牌 - 颜色检查需要考虑游戏中的特殊牌(如无色牌)的处理方式 - 技能重置逻辑需要与游戏引擎的其他技能触发机制协调 [2025-06-19 17:04:39 | AI写代码神器 | 408点数解答]

相关提问