class Blackjack { deck; bank; bet; roundActive = false; vue; constructor(vue) { this.vue = new Vue(); this.deck = CardDeck.createAndShuffle(vue); this.bank = LunaBank.createEmpty(); // this.bank = new LunaBank(vue); this.dealer = Hand.createDealerHand(); this.player = Hand.create(); } startRound() { if (this.bet > this.bank.money) { alertify.notify('Not enough money for bet.'); this.endRound(); } this.bank.money -= this.bet; this.roundActive = true; this.player.pickCard(this.deck.takeOneCard()); this.dealer.pickCard(this.deck.takeOneCard()); this.player.pickCard(this.deck.takeOneCard()); this.dealer.pickCard(this.deck.takeOneCard()); if (this.dealer.hasBlackjack()) { this.dealer.win(); } if (this.player.points === 21) { this.player.pass(); } console.log('Round has started'); } pass() { if (this.dealer.points === this.player.points) { this.roundActive = false; alertify.notify('Draw!'); this.draw(); } else if (this.dealer.points > 21) { this.roundActive = false; alertify.notify('Dealer is plus, you win'); this.win(); } else if (this.dealer.points > this.player.points) { this.roundActive = false; alertify.notify('Dealer Wins'); } else if (this.dealer.points < 17) { this.roundActive = false; this.dealer.pickCard(this.deck.takeOneCard()); this.pass(); } else if (this.player.points > this.dealer.points && this.player.points < 22) { this.roundActive = false; alertify.notify('You win ' + this.bet * 1.5 + '!'); this.win(); } } draw() { this.money = (parseInt(this.money) + parseInt(this.bet)); } win() { this.money += (parseInt(this.bet) * 2); } endRound() { this.roundActive = false; this.lastCard = null; this.status = null; this.dealersHand = []; this.dealer.points = 0; this.usersHand = []; this.player.points = 0; this.deck = CardDeck.createAndShuffle(); } }