Skip to content

Instantly share code, notes, and snippets.

@mojaie
Created January 14, 2012 08:45
Show Gist options
  • Save mojaie/1610736 to your computer and use it in GitHub Desktop.
Save mojaie/1610736 to your computer and use it in GitHub Desktop.
blackjack.py
# coding: UTF-8
import random
class Card:
rank = {'A': 11, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6,
'7': 7, '8': 8, '9': 9, '10': 10, 'J': 10, 'Q': 10, 'K': 10}
def draw(self):
return random.choice(self.rank.keys())
def score(self, arr):
s = sum([self.rank[e] for e in arr])
for _ in range(arr.count('A')):
if s > 21:
s -= 10
return s
if __name__ == '__main__':
c = Card()
print '###Blackjack###'
player = [c.draw() for i in range(2)]
dealer = [c.draw()]
print ' '.join(['あなたのカードは', player[0], 'と', player[1], 'です。'])
print ' '.join(['ディーラーのカードは', dealer[0], 'です。'])
while 1:
try:
choice = raw_input('Hit or Stand (h / s):')
if choice not in ['h', 's']:
raise
except:
print 'エラー:入力が不正です。'
continue
if choice == 'h':
pdraw = c.draw()
player.append(pdraw)
print ' '.join(['あなたが引いたカードは', pdraw, 'です。'])
if c.score(player) > 21:
print 'Bust!: あなたの負けです。'
raise SystemExit
elif c.score(player) == 21:
print 'Blackjack!'
break
elif choice == 's':
break
while 1:
ddraw = c.draw()
dealer.append(ddraw)
print ' '.join(['ディーラーが引いたカードは', ddraw, 'です。'])
if c.score(dealer) > 21:
print 'Bust!: あなたの勝ちです。'
raise SystemExit
elif c.score(dealer) >= 17:
if c.score(dealer) == 21:
print 'Blackjack!'
break
if c.score(player) > c.score(dealer):
print 'あなたの勝ちです。'
elif c.score(player) < c.score(dealer):
print 'あなたの負けです。'
elif c.score(player) == c.score(dealer):
print '引き分けです。'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment