You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用deckofcardsapi开发卡牌游戏时deck_id不同仍获取相同卡牌问题

问题原因
  • 你使用的https://deckofcardsapi.com/api/deck/new/接口仅会生成固定顺序的未洗牌牌组,所有新生成的牌组初始排序完全一致,因此无论deck_id怎么变化,你每次抽取的前几张牌都会完全相同。
解决方案

直接将创建新牌组的请求地址替换为洗牌后创建牌组的接口即可,修改后的JS代码对应片段如下:

newDeckBtn.addEventListener('click', () => {
    // 替换为带洗牌功能的新牌组接口,deck_count指定用1副牌
    fetch('https://deckofcardsapi.com/api/deck/new/shuffle/?deck_count=1')
        .then(res => res.json())
        .then(data => {
            console.log(data.deck_id)
            deckId = data.deck_id;
            // 可选优化:创建完新牌组再启用抽牌按钮,避免未初始化就抽牌报错
            drawCardBtn.disabled = false;
        })
})
可选优化项

你可以额外补充边界处理逻辑避免异常:

  • 页面初始化时禁用抽牌按钮,等新牌组创建成功后再启用,避免deckId为空时发起无效请求
  • 每次抽牌后判断接口返回的remaining字段,剩余牌数不足2张时禁用抽牌按钮,避免抽牌失败

内容的提问来源于stack exchange,提问作者saud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:39:01