使用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
相关产品推荐
相关产品推荐

