UNPKG

card-games-typescript

Version:

Card deck and high or low game library built with TypeScript

45 lines (44 loc) 1.46 kB
"use strict"; 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;