(2 ~ 10 の番号が付けられたカードは、それぞれ 2 ~ 10 の値にする必要があります。J、Q、K は 10、A はハンドの値に応じて 1 または 11 のいずれかにする必要があります)。
これらの値をデッキに割り当てるにはどうすればよいですか? また、ゲームは 3 ラウンドである必要があります。私がやった方法は1ラウンドだけです。プレイヤーの勝敗を追跡しながら、ゲームを 3 回進行させるにはどうすればよいですか?
誰かがこれを簡単な方法で行う方法を説明してもらえますか?
(2 ~ 10 の番号が付けられたカードは、それぞれ 2 ~ 10 の値にする必要があります。J、Q、K は 10、A はハンドの値に応じて 1 または 11 のいずれかにする必要があります)。
これらの値をデッキに割り当てるにはどうすればよいですか? また、ゲームは 3 ラウンドである必要があります。私がやった方法は1ラウンドだけです。プレイヤーの勝敗を追跡しながら、ゲームを 3 回進行させるにはどうすればよいですか?
誰かがこれを簡単な方法で行う方法を説明してもらえますか?
ここにあなたのための完全な実装があります
手を見る。スコア
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()
車は、スーツを示す文字と値を示す数字のタプルとして表すことができます。また、タプルに 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)
もちろん、エースの値を特殊なケースにする必要があります。
おそらく、合計を動的に計算する必要があります。また、個々のプレイヤーのお金を保管する何らかの方法が必要です。現在、合計が 1 つしかないため、お金の配分を知る方法はありません。