🎈 博主:一只程序猿子
🎈 博客主页:一只程序猿子 博客主页
🎈 个人介绍:爱好(bushi)编程!
🎈 创作不易:如喜欢麻烦您点个👍或者点个⭐!
🎈 欢迎访问我的主页(点我直达)
🎈 除此之外您还可以通过个人名片联系我 👉👉👉👉👉👉
如果您很喜欢我的文章且富有,我说:公主 or 王子 请打赏!!!
疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉
疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉
疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉
疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉
疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉
疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉
目录
1.介绍
2.random库
3.代码实现
4.效果展示
1.介绍
本文将介绍如何使用Python模拟斗地主的洗牌与发牌,首先创建一副完整的扑克牌,其次使用了Python的random库来实现随机洗牌,然后继续使用random库实现随机抽取三张牌作为底牌,最后把剩下的牌发给三名玩家。
如果你感兴趣,还可以尝试实现在抽取三张底牌之后从剩下的牌里随机选择一张牌作为地主牌!等牌全部发到玩家手里后根据地主牌判断谁是地主并且把三张底牌划分到地主手中!
2.random库
Python的random库是Python标准库中提供的一个随机数生成器,用于生成在一定范围内的随机整数或浮点数。这个库提供了一系列函数来模拟基本的随机数生成,同时保持了可移植性和效率。
以下是random库中一些常用的函数:
random()
:生成一个0到1之间的随机浮点数。randint(a, b)
:生成一个a到b之间的随机整数,包括a和b。randrange(a, b)
:从a开始,到b-1结束,以步长1进行随机取整。choice(seq)
:从非空序列中随机选取一个元素。shuffle(lst)
:将序列lst进行随机排序。sample(seq, k)
:从序列中随机选取k个元素,返回选取的元素组成的列表。
这些函数可以用于各种场景,例如在数据科学中进行随机采样,或者在游戏开发中生成随机数以决定游戏结果。
3.代码实现
poker_shuffling.py(完整源码):
'''
定义花牌形式:
'♠':黑桃
'♥':红桃
'♣':梅花
'♦':方块
'''
import random
class PokerCards():
def __init__(self):
self.Suits = ['♠', '♥', '♣', '♦'] # 定义所有花色
# 创建一副扑克牌
def create_poker_cards(self):
# 定义一个列表用来存储扑克牌
new_poker_cards = list()
# 定义52张花牌,四种花色,
for i in range(1, 14):
for suit in self.Suits:
# range是前闭后开区间,也就是说包含开始值但是不包含结束值
if i == 1:
rank = 'A'
elif i <= 10:
rank = i
else:
jqk = ['J', 'Q', 'K']
rank = jqk[i - 11]
poker_card = f"|{suit} {rank}|"
# 把这张牌存到列表
new_poker_cards.append(poker_card)
# 把大小王存入列表
new_poker_cards.append("|JOKER|")
new_poker_cards.append("|joker|")
print(f"这是一桌新牌:\n {new_poker_cards}\n")
return new_poker_cards
# 洗牌
def shuffle(self, cards_list):
poker_cards = list(cards_list) # 复制这个列表
# random.shuffle()函数可以随机打乱列表的顺序
random.shuffle(poker_cards)
print(f"这是洗好的牌:\n {poker_cards}\n")
return poker_cards
# 发牌
def deal_cards(self, poker_cards):
# 先随机抽取三张牌做底牌
dipai = random.sample(poker_cards, 3)
for item in dipai:
poker_cards.remove(item)
print(f"这是底牌:\n {dipai}\n")
# 定义三个list存放三个用户的手牌
USER_A = list()
USER_B = list()
USER_C = list()
# 开始发牌
while(True):
# 判断牌是否发完,没发完就继续发
if poker_cards: # 同 if len(poker_cards) != 0:
USER_A.append(poker_cards.pop(0))
USER_B.append(poker_cards.pop(0))
USER_C.append(poker_cards.pop(0))
# print('hh')
else:
# 当全部牌发完,结束循环
break
# 定义一个字典存放用户名和三个用户的手牌
user_dict = {"USER_A":USER_A,"USER_B":USER_B,"USER_C":USER_C}
# 遍历这个字典
for key, value in user_dict.items():
print(f"这是 {key} 的手牌:\n{value}")
def run(self):
# 获取一桌新牌
new_poker_cards = self.create_poker_cards()
# 洗牌
poker_cards = self.shuffle(new_poker_cards)
# 发牌
self.deal_cards(poker_cards)
if __name__ == '__main__':
# 运行洗牌发牌程序
PokerCards().run()
4.效果展示