2015年3月1日日曜日

開発環境

  • 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!)、JQUERY BLACKJACK CODE MAGNETS(No. 3465))を解いてみる。

その他参考書籍

JQUERY BLACKJACK CODE MAGNETS(No. 3465))

JavaScript(BBEdit, Emacs)

$(document).ready(function () {
    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();
    })
    $('#btnStick').click( function () {
        $('#hdrResult').text('Stick!');
    });
});

index3465.html

0 コメント:

コメントを投稿