需求:
1. 允许用户一次性输入多个玩家姓名,不限个数,然后为每个玩家随机生成3张牌。
2. 只有一把扑克牌,确保发出去的每张牌都不重样。
3. 牌需要有黑桃、红桃、方片、梅花之分。
代码如下:
# 棋牌游戏
import random
# 获取所有的牌
def get_all_cards():
# 所有花色
types = ['黑桃', '红桃', '方片', '梅花']
# 所有数字
numbers = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
# 特殊牌(大小王)
jokers = ['大王', '小王']
# 所有的牌
total_cards = jokers
# 把花色和数字拼接起来
for card_type in types:
for number in numbers:
card = card_type + number
total_cards.append(card)
return total_cards
# 发牌
def deal_cards(player_list, total_cards):
result = {} # 最终发牌结果
selected_cards = [] # 已发出的牌
for player in player_list:
# 先移除已发出的牌
for card in selected_cards:
total_cards.remove(card)
# 随机从牌堆中选3张
cards = random.sample(total_cards, 3)
# 存储已发出的牌
selected_cards = cards
# 把玩家和对应的3张牌添加到结果字典中
result[player] = cards
return result
# 开始游戏
def start():
# 所有的牌
total_cards = get_all_cards()
# 输入玩家姓名
players = input('请输入多个玩家姓名(以英文逗号分隔):')
player_list = players.split(',')
# 发牌,有几个人发几次牌
result = deal_cards(player_list, total_cards)
print(result)
start()
运行结果:
请输入多个玩家姓名(以英文逗号分隔):Jack,Rose,Tom,Jerry
{'Jack': ['梅花10', '黑桃7', '方片4'], 'Rose': ['梅花8', '黑桃A', '黑桃6'], 'Tom': ['黑桃J', '红桃5', '方片3'], 'Jerry': ['红桃2', '红桃Q', '方片6']}
Have fun!