2015年2月28日土曜日

開発環境

  • OS X Yosemite - Apple (OS)
  • Safari, Firefox, Google Chrome(Webプラウザ)
  • Emacs (CUI)、BBEdit - Bare Bones Software, Inc.(GUI) (Text Editor)
  • JavaScript (プログラミング言語)

Head First jQuery(Ryan Benedetti(著)、Ronan Cranley(著)、O'Reilly Media)のChapter 6(jQuery and JavaScript: jQuery, I Am Your Father!)、SHARPEN YOUR PENCIL(No. 3456))を解いてみる。

その他参考書籍

SHARPEN YOUR PENCIL(No. 3456))

JavaScript(BBEdit, Emacs)

var used_cards = [],
    deal = function () {
        var i;
        for (i = 0; i < 2; i += 1) {
            hit();
        }
    },
    getRandom = function (num) {
        var my_num = Math.floor(Math.random() * num);
        return my_num;
    },
    hit = function () {
        var good_card = false,
            index,
            c,
            $d;
        do {
            index = getRandom(52);
            if (!$.inArray(index, used_cards) > -1) {
                good_card = true;
                c = deck[index];
                used_cards[used_cards.length] = index;
                hand.cards.push(c);
                $d = $('<div>');
                $d.addClass('current_hand')
                    .appendTo('#my_hand');
                $('<img>')
                    .appendTo($d)
                    .attr('src',
                          'images/cards/' + c.suit + '/' + c.name + '.jpg')
                    .fadeOut('slow')
                    .fadeIn('slow');
            }
        } while (!good_card);
        hand.sumCardTotal();
    },
    hand = {
        cards: [],
        current_total: 0,
        sumCardTotal: function () {
            var i,
                max;
            this.current_total = 0;
            for (i = 0, max = this.cards.length; i < max; i += 1) {
                this.current_total += this.cards[i].value;
            }
            $('#hdrTotal').text('Tota: ' + this.current_total);
            if (this.current_total > 21) {
                $('#btnStick').trigger('click');
                $('#hdrResult').text('BUST!');
            } else if (this.current_total === 21) {
                $('#btnStick').trigger('click');
                $('#hdrResult').text('BlackJack!');
            } else if (this.cards.length === 5) {
                $('#btnStick').trigger('click');
                $('#hdrResult').text('5 card trick!');
            }
        }
    };
Card = function (name, suit, value) {
    this.name = name;
    this.suit = suit;
    this.value = value;
},
deck = [
    new Card('Ace', 'Clubs', 11),
    new Card('Two', 'Clubs', 2),
    new Card('Three', 'Clubs', 3),
    new Card('Four', 'Clubs', 4),
    new Card('Five', 'Clubs', 5),
    new Card('Six', 'Clubs', 6),
    new Card('Seven', 'Clubs', 7),
    new Card('Eight', 'Clubs', 8),
    new Card('Nine', 'Clubs', 9),
    new Card('Ten', 'Clubs', 10),
    new Card('Jack', 'Clubs', 10),
    new Card('Queen', 'Clubs', 10),
    new Card('King', 'Clubs', 10),

    new Card('Ace', 'Hearts', 11),
    new Card('Two', 'Hearts', 2),
    new Card('Three', 'Hearts', 3),
    new Card('Four', 'Hearts', 4),
    new Card('Five', 'Hearts', 5),
    new Card('Six', 'Hearts', 6),
    new Card('Seven', 'Hearts', 7),
    new Card('Eight', 'Hearts', 8),
    new Card('Nine', 'Hearts', 9),
    new Card('Ten', 'Hearts', 10),
    new Card('Jack', 'Hearts', 10),
    new Card('Queen', 'Hearts', 10),
    new Card('King', 'Hearts', 10),

    new Card('Ace', 'Diamonds', 11),
    new Card('Two', 'Diamonds', 2),
    new Card('Three', 'Diamonds', 3),
    new Card('Four', 'Diamonds', 4),
    new Card('Five', 'Diamonds', 5),
    new Card('Six', 'Diamonds', 6),
    new Card('Seven', 'Diamonds', 7),
    new Card('Eight', 'Diamonds', 8),
    new Card('Nine', 'Diamonds', 9),
    new Card('Ten', 'Diamonds', 10),
    new Card('Jack', 'Diamonds', 10),
    new Card('Queen', 'Diamonds', 10),
    new Card('King', 'Diamonds', 10),
    
    new Card('Ace', 'Spades', 11),
    new Card('Two', 'Spades', 2),
    new Card('Three', 'Spades', 3),
    new Card('Four', 'Spades', 4),
    new Card('Five', 'Spades', 5),
    new Card('Six', 'Spades', 6),
    new Card('Seven', 'Spades', 7),
    new Card('Eight', 'Spades', 8),
    new Card('Nine', 'Spades', 9),
    new Card('Ten', 'Spades', 10),
    new Card('Jack', 'Spades', 10),
    new Card('Queen', 'Spades', 10),
    new Card('King', 'Spades', 10)
];

$('#btnDeal').click(function () {
    deal();
    $(this).toggle();
    $('#btnHit').toggle();
    $('#btnStick').toggle();
});
$('#btnHit').click(function() {
    hit();
});

index3455.html

0 コメント:

コメントを投稿