Browse Source

Implement classes.

feature/split
Oliver Stingl 5 years ago
parent
commit
14e6eed7bb
  1. 2
      bugs.md
  2. 2
      index.htm
  3. 8
      js/Blackjack.js
  4. 19
      js/Card.js
  5. 99
      js/CardDeck.js
  6. 5
      js/LunaBank.js
  7. 4
      js/app.js
  8. BIN
      kenney_casinoaudio (1).zip

2
bugs.md

@ -1,2 +1,2 @@ @@ -1,2 +1,2 @@
- [x] #001 dealer wins 22v20
- [ ] #002 draw uses strings to payout
- [x] #002 draw uses strings to payout

2
index.htm

@ -182,6 +182,8 @@ @@ -182,6 +182,8 @@
<script src="https://cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/alertify.min.js"></script>
<script src="https://kit.fontawesome.com/b54a4cceff.js" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script src="js/CardDeck.js"></script>
<script src="js/Card.js"></script>
<script src="js/vue.js"></script>
<script src="js/app.js"></script>
</html>

8
js/Blackjack.js

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
class Blackjack {
deck;
bank;
constructor() {
this.bank = new LunaBank();
}
}

19
js/Card.js

@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
class Card {
color;
symbol;
points;
ace = false;
assetUrl;
constructor(color, symbol, points, ace, assetBaseUrl = 'img/') {
this.color = color;
this.symbol = symbol;
this.points = points;
this.ace = ace;
this.assetUrl = this.createAssetPath(assetBaseUrl);
}
createAssetPath(assetBaseUrl) {
return assetBaseUrl + this.color + this.symbol + '.png'
}
}

99
js/CardDeck.js

@ -0,0 +1,99 @@ @@ -0,0 +1,99 @@
class CardDeck {
constructor() {
this.generateDeck();
}
create() {
return new CardDeck();
}
createAndShuffle() {
let cardDeck = new CardDeck();
cardDeck.shuffle();
return cardDeck;
}
generateDeck() {
const colors = ['spades', 'clubs', 'diamonds', 'hearts'];
const highCards = ['j', 'q', 'k'];
let cardDeck = [];
colors.forEach((color) => {
for (let cardPoints = 1; cardPoints <= 10; cardPoints++) {
let symbol = cardPoints;
let points = cardPoints;
let isAnAce = false;
if (cardPoints === 1) {
points = 11;
symbol = 'a';
isAnAce = true;
}
let card = new Card(
color,
symbol,
points,
isAnAce
)
cardDeck.push(card);
}
highCards.forEach((highCard) => {
let card = new Card(
color,
highCard,
10,
false
)
cardDeck.push(card);
});
this.deck = cardDeck;
})
}
shuffle(runs = 1) {
let cardCount = this.deck.length, t, i;
for (let run = 0; run === runs; run++) {
while (cardCount) {
i = Math.floor(Math.random() * cardCount--);
t = this.deck[cardCount];
this.deck[cardCount] = this.deck[i];
this.deck[i] = t;
}
}
}
cardsInStack() {
return this.deck.length;
}
deckIsEmpty() {
return this.deck.length > 0 ? true : false;
}
takeOneCard(cardsToDraw = 1) {
if (this.cardsInStack() > 0) {
}
return this.deck.shift();
}
takeCards(cardsToDraw) {
let drawnCards = [];
for (let run = 0; run === cardsToDraw; run++) {
drawnCards.push(this.deck.shift());
}
return drawnCards;
}
}

5
js/LunaBank.js

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
class LunaBank {
constructor(application) {
}
}

4
js/app.js

@ -24,12 +24,12 @@ let app = new Vue({ @@ -24,12 +24,12 @@ let app = new Vue({
},
methods: {
generateDeck() {
const symbolNames = ['spades', 'clubs', 'diamonds', 'hearts'];
const names = ['spades', 'clubs', 'diamonds', 'hearts'];
const highCards = ['j', 'q', 'k'];
let cardDeck = [];
symbolNames.forEach((symbolName) => {
names.forEach((symbolName) => {
for (let cardPoints = 1; cardPoints <= 10; cardPoints++) {
let cardSymbol = cardPoints;
let points = cardPoints;

BIN
kenney_casinoaudio (1).zip

Binary file not shown.
Loading…
Cancel
Save