|
|
|
|
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();
|
|
|
|
|
}
|
|
|
|
|
}
|