
6 changed files with 302 additions and 146 deletions
@ -0,0 +1,137 @@ |
|||||||
|
class Hand { |
||||||
|
drawCardToUser() { |
||||||
|
let vue = this; |
||||||
|
|
||||||
|
let drawnCard = vue.cards.shift(); |
||||||
|
vue.usersHand.push(drawnCard); |
||||||
|
|
||||||
|
if (drawnCard.ace && vue.handScore > 10) { |
||||||
|
drawnCard.points = 1; |
||||||
|
} |
||||||
|
|
||||||
|
if ((vue.handScore + drawnCard.points) > 21) { |
||||||
|
let aceCount = this.handIncludesAces(this.usersHand); |
||||||
|
console.log(aceCount + ' aces should be decreased in value'); |
||||||
|
} |
||||||
|
|
||||||
|
vue.handScore += drawnCard.points; |
||||||
|
} |
||||||
|
|
||||||
|
drawCardToDealer() { |
||||||
|
let vue = this; |
||||||
|
|
||||||
|
let drawnCard = vue.cards.shift(); |
||||||
|
vue.dealersHand.push(drawnCard); |
||||||
|
|
||||||
|
if (drawnCard.ace && vue.dealerScore > 10) { |
||||||
|
drawnCard.points = 1; |
||||||
|
} |
||||||
|
|
||||||
|
if ((vue.dealerScore + drawnCard.points) > 21) { |
||||||
|
let aceCount = this.handIncludesAces(this.dealersHand); |
||||||
|
console.log(aceCount + ' aces should be decreased in value'); |
||||||
|
} |
||||||
|
|
||||||
|
vue.dealerScore += drawnCard.points; |
||||||
|
} |
||||||
|
|
||||||
|
handIncludesAces(hand) { |
||||||
|
let aceCount = 0; |
||||||
|
|
||||||
|
hand.forEach((card) => { |
||||||
|
if (card.ace === true) { |
||||||
|
aceCount++; |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
return aceCount; |
||||||
|
} |
||||||
|
|
||||||
|
handHasBlackJack(score) { |
||||||
|
return score === 21; |
||||||
|
} |
||||||
|
|
||||||
|
isPlus(score) { |
||||||
|
return score > 21; |
||||||
|
} |
||||||
|
|
||||||
|
startRound() { |
||||||
|
if (this.bet > this.money) { |
||||||
|
alertify.notify('Not enough money for bet.'); |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
this.money -= this.bet; |
||||||
|
|
||||||
|
this.initiated = true; |
||||||
|
this.endRound(); |
||||||
|
|
||||||
|
this.roundActive = true; |
||||||
|
|
||||||
|
this.drawCardToUser(); |
||||||
|
this.drawCardToDealer(); |
||||||
|
this.drawCardToUser(); |
||||||
|
this.drawCardToDealer(); |
||||||
|
|
||||||
|
if (this.handHasBlackJack(this.dealerScore)) { |
||||||
|
this.dealerWon(); |
||||||
|
} |
||||||
|
|
||||||
|
if (this.handScore === 21) { |
||||||
|
this.pass(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
drawAnotherCard() { |
||||||
|
this.drawCardToUser(); |
||||||
|
|
||||||
|
if (this.isPlus(this.handScore)) { |
||||||
|
alertify.notify('Hand is plus, you lose.') |
||||||
|
this.roundActive = false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
pass() { |
||||||
|
if (this.dealerScore === this.handScore) { |
||||||
|
this.roundActive = false; |
||||||
|
alertify.notify('Draw!'); |
||||||
|
this.draw(); |
||||||
|
} else if (this.dealerScore > 21) { |
||||||
|
this.roundActive = false; |
||||||
|
alertify.notify('Dealer is plus, you win'); |
||||||
|
this.win(); |
||||||
|
} else if (this.dealerScore > this.handScore) { |
||||||
|
this.roundActive = false; |
||||||
|
alertify.notify('Dealer Wins'); |
||||||
|
} else if (this.dealerScore < 17) { |
||||||
|
this.roundActive = false; |
||||||
|
this.drawCardToDealer(); |
||||||
|
this.pass(); |
||||||
|
} else if (this.handScore > this.dealerScore && this.handScore < 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.dealerScore = 0; |
||||||
|
this.usersHand = []; |
||||||
|
this.handScore = 0; |
||||||
|
|
||||||
|
this.cards = this.generateDeck(); |
||||||
|
this.shuffleDeck(); |
||||||
|
} |
||||||
|
} |
@ -1,5 +1,157 @@ |
|||||||
class LunaBank { |
class LunaBank { |
||||||
constructor(application) { |
constructor(application) { |
||||||
|
this._application = application; |
||||||
|
} |
||||||
|
|
||||||
|
connect() { |
||||||
|
// TODO: Implement method
|
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
get application() { |
||||||
|
return this._application; |
||||||
} |
} |
||||||
|
|
||||||
|
set application(application) { |
||||||
|
this._application = application; |
||||||
|
} |
||||||
|
|
||||||
|
// TODO: re-write methods
|
||||||
|
//
|
||||||
|
// checkUserStatus() {
|
||||||
|
// let vue = this;
|
||||||
|
// axios.get('https://luna-development.net/bank/get')
|
||||||
|
// .then(function (response) {
|
||||||
|
// vue.bank = Number(response.data.value);
|
||||||
|
// vue.username = response.data.name;
|
||||||
|
// vue.avatar = '/storage/avatars/' + response.data.avatar;
|
||||||
|
// vue.bankIsActive = true;
|
||||||
|
// vue.$forceUpdate;
|
||||||
|
//
|
||||||
|
// if (Number(vue.bank) <= Number(0)) {
|
||||||
|
// vue.money = 5000;
|
||||||
|
// } else {
|
||||||
|
// alertify.notify('Welcome back, ' + vue.username + '!', 'custom')
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// .catch(function (error) {
|
||||||
|
// console.log(error);
|
||||||
|
// alertify.notify("Can't connect to Luna Bank, are you logged in?", 'custom');
|
||||||
|
//
|
||||||
|
// // Removed default money here if bank empty / dead
|
||||||
|
// vue.username = 'Gast';
|
||||||
|
// vue.bankIsActive = false;
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// updateBankAccount() {
|
||||||
|
// let vue = this;
|
||||||
|
//
|
||||||
|
// if (vue.bankIsActive) {
|
||||||
|
// axios.get('https://luna-development.net/bank/get')
|
||||||
|
// .then(function (response) {
|
||||||
|
// vue.bank = Number(response.data.value);
|
||||||
|
// vue.username = response.data.name;
|
||||||
|
// vue.avatar = '/storage/avatars/' + response.data.avatar;
|
||||||
|
// vue.$forceUpdate;
|
||||||
|
// })
|
||||||
|
// .catch(function (error) {
|
||||||
|
// console.log(error);
|
||||||
|
// vue.username = 'Gast';
|
||||||
|
// vue.bankIsActive = false;
|
||||||
|
// vue.avatar = null;
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// transferToBank() {
|
||||||
|
// let vue = this;
|
||||||
|
//
|
||||||
|
// if (vue.toBank <= vue.money && vue.toBank > 0) {
|
||||||
|
// let bankSave = vue.bank;
|
||||||
|
// let moneySave = vue.money;
|
||||||
|
// let toBankSave = vue.toBank;
|
||||||
|
//
|
||||||
|
// vue.bank = Number(vue.bank) + Number(vue.toBank);
|
||||||
|
// vue.money = Number(vue.money) - Number(vue.toBank);
|
||||||
|
//
|
||||||
|
// axios.post('/bank/store', {
|
||||||
|
// value: vue.bank,
|
||||||
|
// app: 'BlackJack',
|
||||||
|
// description: 'Deposit',
|
||||||
|
// amount: toBankSave
|
||||||
|
// }).then(function (response) {
|
||||||
|
// // i'm the master of self-advertisement
|
||||||
|
// // speaking of advertisement? check out the fresh servers at luna-development.net
|
||||||
|
// alertify.notify('Successfully transfered ' + toBankSave + ' $ to your account.', 'custom');
|
||||||
|
// }).catch(function (error) {
|
||||||
|
// vue.bank = bankSave;
|
||||||
|
// vue.money = moneySave;
|
||||||
|
//
|
||||||
|
// alertify.notify('Error while process bank-transaction.', 'custom');
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// vue.toBank = undefined;
|
||||||
|
// } else if (vue.toBank === undefined) {
|
||||||
|
// return;
|
||||||
|
// } else {
|
||||||
|
// vue.toBank = undefined;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// transferFromBank() {
|
||||||
|
// let vue = this;
|
||||||
|
//
|
||||||
|
// // Number() all over again
|
||||||
|
// if (vue.toMoney <= vue.bank && vue.toMoney > 0) {
|
||||||
|
// let bankSave = vue.bank;
|
||||||
|
// let moneySave = vue.money;
|
||||||
|
// let toMoneySave = vue.toMoney;
|
||||||
|
//
|
||||||
|
// vue.bank = Number(vue.bank) - Number(vue.toMoney);
|
||||||
|
// vue.money = Number(vue.money) + Number(vue.toMoney);
|
||||||
|
//
|
||||||
|
// axios.post('/bank/store', {
|
||||||
|
// value: vue.bank,
|
||||||
|
// app: 'BlackJack',
|
||||||
|
// description: 'Withdrawal',
|
||||||
|
// amount: toMoneySave
|
||||||
|
// }).then(function (response) {
|
||||||
|
// // i'm the master of self-advertisement, speaking of advertisement?
|
||||||
|
// // check out the fresh servers on luna-development.net
|
||||||
|
// alertify.notify('Successfully got ' + toMoneySave + ' $ from your account', 'custom');
|
||||||
|
// }).catch(function (error) {
|
||||||
|
// vue.bank = bankSave;
|
||||||
|
// vue.money = moneySave;
|
||||||
|
//
|
||||||
|
// alertify.notify('Error while process bank-transaction.', 'custom');
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// vue.toMoney = undefined;
|
||||||
|
// } else if (vue.toMoney === undefined || vue.toMoney <= 0) {
|
||||||
|
// return;
|
||||||
|
// } else {
|
||||||
|
// vue.toMoney = undefined;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// bankButtonEnter(button, direction) {
|
||||||
|
// let vue = this;
|
||||||
|
// console.log('protocol: ' + direction);
|
||||||
|
//
|
||||||
|
// if (direction === 'from') {
|
||||||
|
// vue.transferFromBank();
|
||||||
|
// } else if (direction === 'to') {
|
||||||
|
// vue.transferToBank();
|
||||||
|
// } else {
|
||||||
|
// alertify.notify('Error while process bank-transaction.', 'custom');
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// document.getElementById(button).click();
|
||||||
|
// },
|
||||||
|
//
|
||||||
|
// isMoney(number) {
|
||||||
|
// return new Intl.NumberFormat('de-DE', {style: 'decimal'}).format(number);
|
||||||
|
// },
|
||||||
} |
} |
Loading…
Reference in new issue