Skip to content

Instantly share code, notes, and snippets.

@andyfoster
Forked from jonarnaldo/Blackjack
Created June 12, 2016 22:29
Show Gist options
  • Select an option

  • Save andyfoster/464f7276d0e5f5c22f88d88805dfb1c6 to your computer and use it in GitHub Desktop.

Select an option

Save andyfoster/464f7276d0e5f5c22f88d88805dfb1c6 to your computer and use it in GitHub Desktop.

Revisions

  1. andyfoster renamed this gist Jun 12, 2016. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. @jonarnaldo jonarnaldo created this gist Feb 25, 2014.
    118 changes: 118 additions & 0 deletions Blackjack
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,118 @@
    /*Object Oriented Blackjack

    A Game has: Players
    Dealer
    Deck

    A Player / Dealer has: Score
    Cards

    A Score has: Game Logic
    Current Score


    A Deck has: Cards
    */
    function Game() {
    this.currentTurnIndex = 0;
    this.deck = new Deck();
    }

    function Deck() {
    this.cards = [];
    this.cardsDrawn = 0;
    var suits = ["spades", "diamonds", "hearts", "clubs"];
    var names = ["ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack", "queen", "king"];
    for (var suit in suits) {
    for (var name in names) {
    this.cards.push(new Card(names[name], suits[suit]));
    }
    }
    }

    Deck.prototype.getCard = function () {
    if (this.cards.length == this.cardsDrawn) {
    return null;
    } //case: check if all cards drawn

    var random = Math.floor(Math.random() * (this.cards.length - this.cardsDrawn));
    var temp = this.cards[random];

    //swap chosen card with card last in array
    this.cards[random] = this.cards[this.cards.length - this.cardsDrawn - 1];
    this.cards[this.cards.length - this.cardsDrawn - 1] = temp;
    this.cardsDrawn++;

    return temp;
    };

    function Card(name, suit) {
    this.name = name;
    this.suit = suit;
    }

    Card.prototype.image = function () {
    return "http://www.jonarnaldo.com/sandbox/deck_images/" + name + "_of_" + suit + ".png";
    };

    Card.prototype.value = function () {
    if (this.name == "jack" || "queen" || "king") {
    return [10];
    } else if (this.name == "ace") {
    return [1, 11];
    } else {
    return parseInt(this.name, 10);
    }
    };

    function Player() {
    //this.name;
    this.cards = [];
    }

    Player.prototype.addCard = function () {
    this.cards.push(deck.getCard());
    };

    Player.prototype.score = function () {
    var score = 0;
    var aces = [];

    for (var i = 0; i < this.cards.length; i++) {
    var value = this.cards[i].value() // value array ex.[10]
    if (value.length == 1) {
    score += value[0];
    } else {
    aces.push(value);
    }
    }

    for (var j = 0; j < aces.length; j++) {
    if (score + aces[j].value[1] <= 21) {
    score + aces[j].value[1];
    } else {
    score + aces[j].value[0];
    }
    }
    return score;

    };

    var deck = new Deck();
    var player1 = new Player();


    $("#getCard").click(function () {
    player1.addCard();




    var cardName = player1.cards[player1.cards.length-1].name;
    var cardSuit = player1.cards[player1.cards.length-1].suit;
    $("#table").append(cardName + cardSuit);




    });