问题描述
我目前正在构建一个二十一点游戏,我的一个课程叫做“Deck”。这套牌需要做两件事:
- 返回一组其他对象可以使用的卡片(这相当于将这些卡片发出)
- 从牌组中取出这些牌(一旦发了牌,就应该将其取出)。
目前,我通过创建两个方法实现了这两个功能:selectCards()
和 removeIndexFromDeck
。我首先调用 selectCards()
返回选定的卡片,但也调用 removeIndexFromDeck()
。
这种方法是否违反了最佳做法?看起来我的 selectCards()
函数既有返回值又有副作用。
如果确实违反了最佳实践,我将如何更改这些方法,但要确保我仍然能够返回选定的卡片并将它们从牌组中移除。
谢谢!
class Deck {
constructor() {
this.deck = [];
['♦','♣','♥','♠'].forEach(suit => {
['A','2','3','4','5','6','7','8','9','10','J','Q','K'].forEach(value => {
this.deck.push(`${value}${suit}`);
});
});
}
selectCards(numCards) {
let selectedCards = [];
while (numCards > 0) {
let randIndex = Math.floor(Math.random() * this.deck.length);
selectedCards.push(this.deck[randIndex]);
this.removeIndexFromDeck(randIndex);
numCards -= 1;
}
return selectedCards;
}
removeIndexFromDeck(index) {
this.deck.splice(index,1);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)