card-games-typescript
Version:
Card deck and high or low game library built with TypeScript
45 lines (44 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DeckOfCards = void 0;
const Card_1 = require("./Card");
const misc_1 = require("./misc");
// constants to build the deck
const validSuites = ["hearts", "spades", "diamonds", "clubs"];
const validRanks40 = ["2", "3", "4", "5", "6", "7", "J", "Q", "K", "A"];
const validRanks52 = ["2", "3", "4", "5", "6", "7", , "8", "9", "10", "J", "Q", "K", "A"];
class DeckOfCards {
constructor(numberOfCards) {
this.deck = [];
this.cardsDrawn = [];
this.numberOfCards = numberOfCards === 40 ? numberOfCards : 52;
this.buildDeck();
}
buildDeck() {
this.deck = []; // reset deck
this.cardsDrawn = []; // reset cards drawn
const validRanks = this.numberOfCards == 40 ? validRanks40 : validRanks52;
validSuites.forEach(suite => {
validRanks.forEach(rank => {
this.deck.push(new Card_1.Card(rank, suite));
});
});
}
drawCard() {
if (!this.isEmpty()) {
const cardFromTop = this.deck.pop();
this.cardsDrawn.push(cardFromTop);
return cardFromTop;
}
return null;
}
shuffleDeck(times = 1) {
for (var i = 1; i <= times; i += 1) {
misc_1.shuffleArray(this.deck);
}
}
isEmpty() {
return this.deck.length === 0;
}
}
exports.DeckOfCards = DeckOfCards;