扑克牌21点游戏程序设计。规则是:共54张扑克牌,各花色JQKA和大小王按1分计算,其他2~10各花色均按牌面实际分数计算。游戏者为A(即电脑)和B(即用户)二人,游戏开始B随机取得一张扑克牌,根据点数可决定是否要下一张。同时A也随机获得一张,并根据点数确定是否需要获取下一张。当A和B都不再要牌以后计算各自牌的分数和。超出20分均按21分计数,为输。否则与20差距越小的赢的点数越大。比较点数大的为赢家。 要求:实时显示B当前拥有的牌和总分数;显示结束时A和B各自的牌面和总分;显示比赛结果
时间: 2023-03-24 08:01:51 浏览: 396
一个21点的扑克牌游戏_C++课程设计_源代码_亲测可用.zip
5星 · 资源好评率100%
这是一个关于21点游戏程序设计的问题。规则是:一副牌共54张,包括54张扑克牌,各花色JQKA和大小王各一张,JQKA和大小王都算10分,其余2~10各按牌面实际分数计算。游戏者分为A和B两人,游戏开始B随机取得一张牌,根据点数决定是否要再取一张牌,A也随机取得一张牌,根据点数决定是否需要再取一张牌。A和B不再要牌以后计算各自的牌面分数。超过20分的为输家,否则点数最接近21点的获胜。如果点数相同则为平局。
要求:
- 实时显示B当前持有的牌和总分数。
- 显示游戏结束时A和B各自的牌面和总分。
- 显示比赛结果,包括哪一方胜出或是平局。
以下是这个游戏的Python实现代码,供您参考:
```python
import random
# 牌面点数
CARD_VALUES = {
"A": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9, "10": 10,
"J": 10, "Q": 10, "K": 10, "大王": 10, "小王": 10
}
# 牌面花色
CARD_SUITS = ["黑桃", "红心", "梅花", "方块", "大王", "小王"]
# 扑克牌
CARDS = [
suit + value for suit in CARD_SUITS for value in CARD_VALUES.keys()
]
# 游戏
class Game:
def __init__(self):
self.deck = list(CARDS) # 复制一副新的牌
self.cards = {"A": [], "B": []} # A和B的牌
self.scores = {"A": 0, "B": 0} # A和B的总分
self.winner = None # 获胜者
# 发牌
def deal(self, player):
card = random.choice(self.deck)
self.deck.remove(card)
self.cards[player].append(card)
self.scores[player] += CARD_VALUES[card[1:]]
# B的回合
def play_b(self):
self.deal("B")
if self.scores["B"] < 17:
self.play_b() # 继续取牌
# A的回合
def play_a(self):
self.deal("A")
if self.scores["A"] < 20:
choice = input("是否要继续取牌(y/n)?")
if choice.lower() == "y":
self.play_a() # 继续取牌
# 计算胜者
阅读全文