python21点小游戏
时间: 2023-09-01 10:07:47 浏览: 104
这是一个简单的21点小游戏,游戏规则如下:
1.玩家和电脑分别抽取两张牌,牌面点数相加,最接近21点的玩家获胜。
2.如果某一方超过21点,则输掉游戏。
3.每次玩家可以选择要牌或停牌,要牌则再抽取一张牌,停牌则轮到电脑抽取牌。
4.电脑将一直抽牌,直到点数超过17点。
5.游戏结束后,询问玩家是否继续游戏,选择继续则重新开始游戏,否则退出游戏。
代码如下:
```python
import random
# 初始化牌组
cards = ['A', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K']
deck = cards * 4
# 计算牌面点数
def get_value(hand):
value = 0
aces = 0
for card in hand:
if card == 'A':
aces += 1
value += 11
elif card in ['K', 'Q', 'J']:
value += 10
else:
value += card
while value > 21 and aces:
value -= 10
aces -= 1
return value
# 发牌
def deal(deck, n):
hand = []
for i in range(n):
card = random.choice(deck)
deck.remove(card)
hand.append(card)
return hand
# 游戏主函数
def game():
deck = cards * 4
player_hand = deal(deck, 2)
computer_hand = deal(deck, 2)
print('你的牌是:', player_hand)
print('电脑的牌是:', [computer_hand[0], 'X'])
while True:
choice = input('是否要牌(y/n): ')
if choice == 'y':
player_hand += deal(deck, 1)
print('你的牌是:', player_hand)
if get_value(player_hand) > 21:
print('你输了')
return
else:
break
while get_value(computer_hand) < 17:
computer_hand += deal(deck, 1)
print('电脑的牌是:', computer_hand)
if get_value(computer_hand) > 21:
print('你赢了')
elif get_value(player_hand) > get_value(computer_hand):
print('你赢了')
elif get_value(player_hand) < get_value(computer_hand):
print('你输了')
else:
print('平局')
return
# 开始游戏
while True:
game()
choice = input('是否继续游戏(y/n): ')
if choice != 'y':
break
```
运行结果:
```
你的牌是: ['A', 9]
电脑的牌是: [8, 'X']
是否要牌(y/n): y
你的牌是: ['A', 9, 2]
是否要牌(y/n): n
电脑的牌是: [8, 10]
你输了
是否继续游戏(y/n): y
你的牌是: [6, 9]
电脑的牌是: [4, 'X']
是否要牌(y/n): y
你的牌是: [6, 9, 2]
是否要牌(y/n): n
电脑的牌是: [4, 9, 5]
你赢了
是否继续游戏(y/n): n
```
阅读全文