1

(2 ~ 10 の番号が付けられたカードは、それぞれ 2 ~ 10 の値にする必要があります。J、Q、K は 10、A はハンドの値に応じて 1 または 11 のいずれかにする必要があります)。

これらの値をデッキに割り当てるにはどうすればよいですか? また、ゲームは 3 ラウンドである必要があります。私がやった方法は1ラウンドだけです。プレイヤーの勝敗を追跡しながら、ゲームを 3 回進行させるにはどうすればよいですか?

誰かがこれを簡単な方法で行う方法を説明してもらえますか?

4

3 に答える 3

1

ここにあなたのための完全な実装があります

手を見る。スコア

import random

class Card:
    def __init__(self,rank,suite):        
        self.rank = rank
        self.suite = suite
    def Rank(self):
        return "Ace Two Three Four Five Six Seven Eight Nine Ten Jack Queen King".split()[self.rank]
    def Suite(self):
        return "Hearts Spades Clubs Diamonds".split()[self.suite]
    def __str__(self):
        #print "Get Self:",type(self)
        #print "Dir:",dir(self)
        #return "OF"
        return self.Rank()+" of "+ self.Suite()


class Hand:
    def __init__(self):
        self.cards = []
    def Score(self):
        aces_ct = 0
        score = 0
        for c in self.cards:
            if c.rank == 0:
                aces_ct += 1
                score += 11
            if 0 < c.rank < 9:
                score += c.rank+1
            else:
                score += 10
        while score > 21 and aces_ct > 0:
            score -= 10
            aces_ct -= 1
        return score
    def add(self,card):
        self.cards.append(card)
    def Show(self,show_only=None):
        if not show_only:
            for k in self.cards:
                print "%s"%k
        else:
            if isinstance(show_only,int):
                print "%s"%self.cards[show_only]
            elif isinstance(show_only,(list,tuple)):
                for idx in show_only:
                    print "%s"%self.cards[idx]


class deck:
    def __init__(self):
        self.cards = []
        for i in range(4):
            for j in range(13):
                self.cards.append(Card(j,i))
        random.shuffle(self.cards)
    def shuffle(self):
        random.shuffle(self.cards)
    def pop(self):
        return self.cards.pop()

if __name__ == "__main__":
    d = deck()
    player_hand = Hand()
    dealer_hand = Hand()
    player_hand.add(d.pop())
    dealer_hand.add(d.pop())
    player_hand.add(d.pop())
    dealer_hand.add(d.pop())
    print "Player Score :",player_hand.Score()
    player_hand.Show()
    print "\n\nDealer Score :",dealer_hand.Score()
    dealer_hand.Show()
于 2012-07-30T23:05:27.777 に答える
0

車は、スーツを示す文字と値を示す数字のタプルとして表すことができます。また、タプルに 3 番目の値、そのブラックジャックの値を追加します (たとえば、キングとクイーンは両方とも 10 としてカウントされます)。

card = ('D', 11, 10)  # card is queen of diamonds

カードを表す独自のクラスを作成することもできます。

class Card(object):
    def __init__(self, suit, number):
        self.suit = suit
        self.number = number
        self.value = (number if 2 <= number <= 9 else 10)

もちろん、エースの値を特殊なケースにする必要があります。

于 2012-07-30T22:52:02.560 に答える
0

おそらく、合計を動的に計算する必要があります。また、個々のプレイヤーのお金を保管する何らかの方法が必要です。現在、合計が 1 つしかないため、お金の配分を知る方法はありません。

于 2012-07-30T22:56:24.313 に答える