6 changed files with 294 additions and 156 deletions
@ -1,11 +1,86 @@ |
|||||||
class Blackjack { |
class Blackjack { |
||||||
deck; |
deck; |
||||||
bank; |
bank; |
||||||
|
bet; |
||||||
roundActive = false; |
roundActive = false; |
||||||
|
|
||||||
constructor() { |
constructor(vue) { |
||||||
this.deck = new CardDeck(); |
this.vue = vue; |
||||||
this.bank = new LunaBank(); |
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'); |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
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(); |
||||||
} |
} |
||||||
} |
} |
Loading…
Reference in new issue