Python-简单模拟斗地主洗牌发牌

news2024/11/24 4:00:36
额滴名片儿

🎈 博主:一只程序猿子

🎈 博客主页:一只程序猿子 博客主页

🎈 个人介绍:爱好(bushi)编程!

🎈 创作不易:如喜欢麻烦您点个👍或者点个⭐

🎈 欢迎访问我的主页(点我直达)

🎈 除此之外您还可以通过个人名片联系我 👉👉👉👉👉👉

如果您很喜欢我的文章且富有,我说:公主 or 王子 请打赏!!!

求打赏🥺

疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉

疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉

疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉

疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉

疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉

疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉

目录

1.介绍

2.random库

3.代码实现

4.效果展示


1.介绍

        本文将介绍如何使用Python模拟斗地主的洗牌与发牌,首先创建一副完整的扑克牌,其次使用了Python的random库来实现随机洗牌,然后继续使用random库实现随机抽取三张牌作为底牌,最后把剩下的牌发给三名玩家。   

        如果你感兴趣,还可以尝试实现在抽取三张底牌之后从剩下的牌里随机选择一张牌作为地主牌!等牌全部发到玩家手里后根据地主牌判断谁是地主并且把三张底牌划分到地主手中!

2.random库

        Python的random库是Python标准库中提供的一个随机数生成器,用于生成在一定范围内的随机整数或浮点数。这个库提供了一系列函数来模拟基本的随机数生成,同时保持了可移植性和效率。

        以下是random库中一些常用的函数:

  1. random():生成一个0到1之间的随机浮点数。
  2. randint(a, b):生成一个a到b之间的随机整数,包括a和b。
  3. randrange(a, b):从a开始,到b-1结束,以步长1进行随机取整。
  4. choice(seq):从非空序列中随机选取一个元素。
  5. shuffle(lst):将序列lst进行随机排序。
  6. 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.效果展示

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1273705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【人工智能Ⅰ】实验5:AI实验箱应用之贝叶斯

实验5 AI实验箱应用之贝叶斯 一、实验目的 1. 用实验箱的摄像头拍摄方块上数字的图片&#xff0c;在图像处理的基础上&#xff0c;应用贝叶斯方法识别图像中的数字并进行分类。 二、实验内容和步骤 1. 应用实验箱机械手臂上的摄像头拍摄图像&#xff1b; 2. Opencv处理图像…

生成对抗网络(GAN)手写数字生成

文章目录 一、前言二、前期工作1. 设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09; 二、什么是生成对抗网络1. 简单介绍2. 应用领域 三、网络结构四、构建生成器五、构建鉴别器六、训练模型1. 保存样例图片2. 训练模型 七、生成动图 一、前言 我的环境&#xff1…

可行性研究:2023年废旧金属回收行业前景及市场数据分析

废品收购是再生资源行业的重要业务之一。是指将各种废弃物品分类后按不同种类和性能卖给不同的生产厂商或直接出售给再制造厂家&#xff08;如重新使用报废汽车拆解的零件&#xff09;。废旧金属是指暂时失去使用价值的金属或合金制品&#xff0c;一般的废旧金属都含有有用的金…

车牌限行_分支结构的C语言实现xdoj7

试题名称 车牌限行 时间限制: 1 秒 内存限制: 256KB 问题描述 问题描述 受雾霾天气影响&#xff0c;某市决定当雾霾指数超过设定值时对车辆进行限行&#xff0c;假设车牌号全为数字&#xff0c;且长度不超过6位&#xff0c;限行规则如下&#xff1a; &#xff08;…

C++相关闲碎记录(2)

1、误用shared_ptr int* p new int; shared_ptr<int> sp1(p); shared_ptr<int> sp2(p); //error // 通过原始指针两次创建shared_ptr是错误的shared_ptr<int> sp1(new int); shared_ptr<int> sp2(sp1); //ok 如果对C相关闲碎记录(1)中记录的shar…

AI - Steering behaviorsII(碰撞避免,跟随)

Steering Behaviors系统中的碰撞避免&#xff0c;路径跟随&#xff0c;队长跟随 Collision Avoid 在物体前进的方向&#xff0c;延伸一定长度的向量进行检测。相当于物体对前方一定可使范围进行检测障碍物的碰撞 延伸的向量与碰撞物圆心的距离小于碰撞物的半径&#xff0c;则…

docker-compose脚本编写及常用命令

安装 linux DOCKER_CONFIG/usr/local/lib/docker/cli-plugins sudo mkdir -p $DOCKER_CONFIG/cli-plugins sudo curl -SL https://521github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose sudo c…

numpy知识库:深入理解numpy.resize函数和数组的resize方法

前言 numpy中的resize函数顾名思义&#xff0c;可以用于调整数组的大小。但具体如何调整&#xff1f;数组形状变了&#xff0c;意味着数组中的元素个数发生了变化(增加或减少)&#xff0c;如何确定resize后的新数组中每个元素的数值呢&#xff1f;本次博文就来探讨并试图回答这…

润申信息企业标准化管理系统 SQL注入漏洞复现

0x01 产品简介 润申信息科技企业标准化管理系统通过给客户提供各种灵活的标准法规信息化管理解决方案&#xff0c;帮助他们实现了高效的标准法规管理&#xff0c;完成个性化标准法规库的信息化建设。 0x02 漏洞概述 润申信息科技企业标准化管理系统 CommentStandardHandler.as…

蓝桥杯每日一题2023.11.30

题目描述 九数组分数 - 蓝桥云课 (lanqiao.cn) 题目分析 此题目实际上是使用dfs进行数字确定&#xff0c;每次循环中将当前数字与剩下的数字进行交换 eg.1与2、3、4、、、进行交换 2与3、4、、、进行交换 填空位置将其恢复原来位置即可&#xff0c;也就直接将其交换回去即可…

鸿蒙原生应用/元服务开发-开发者如何进行真机测试

前提条件&#xff1a;已经完成鸿蒙原生应用/元服务开发&#xff0c;已经能相对熟练使用DevEco Studio,开发者自己有鸿蒙4.0及以上的真机设备。 真机测试具体流程如下 1.手机打开开发者模式 2.在项目中&#xff0c;左上角 文件(F)->项目结构 进行账号连接 3.运行

AS 之 gradle 命令

文章目录 1、命令大全2、编译命令2.1 检查依赖并编译打包2.2 编译并打 Debug 包2.3 编译打出 Debug 包并安装2.4 编译并打出 Release 包2.5 编译打出 Release 包并安装2.6 Debug/Release 编译并打印日志 3、清除命令4、卸载命令4.1 卸载 Debug/Release 安装包4.2 adb 卸载 5、调…

智能优化算法应用:基于风驱动算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于风驱动算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于风驱动算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.风驱动算法4.实验参数设定5.算法结果6.参考文献7.…

麒麟操作系统进入单用户模式

Kylin V4 桌面版&#xff1a; 启动系统后&#xff0c;在启动菜单界面选择 Kylin 4.0.2 高级选项后回车。 在高级模式选项下选择第二行 recovery mode 模式后&#xff0c;按 e 编辑。 按 e 后如下图&#xff0c;找到 linux 开头的一行&#xff0c;修改 ro 为 rw 后&#xff0c…

将项目放到gitee上

参考 将IDEA中的项目上传到Gitee仓库中_哔哩哔哩_bilibili 如果cmd运行ssh不行的话&#xff0c;要换成git bash 如果初始化后的命令用不了&#xff0c;直接用idea项放右键&#xff0c;用git工具操作

[原创][3]探究C#多线程开发细节-“用ConcurrentQueue<T>解决多线程的无顺序性的问题“

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XXQQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi…

数据中心布线解决方案比较: DAC 电缆和 AOC 光缆

在当今的数字时代&#xff0c;数据中心是无数行业的支柱&#xff0c;它确保了信息的交换并维护关键数据的完整性。为了保持这些数据中心高效运行&#xff0c;选择正确的布线解决方案至关重要。在这方面&#xff0c;两种流行的选择是直连铜缆 (DAC) 和有源光缆 (AOC)。在本文中&…

论文绘图——局部细节放大

文章目录 前言一、绘图1.0版二、绘图2.0版三、总结 前言 我们经常在论文中会看到下面这些样式的图片&#xff1a;在图片中使用矩形框框出感兴趣的区域&#xff0c;然后在底部或者其他位置附上对应的局部放大的细节图&#xff0c;简洁好看。✨ 曾尝试使用过PPT制作&#xff0c;也…

用于缓存一些固定名称的小组件

项目中&#xff0c;用于缓存姓名、地名、单位名称等一些较固定名称的id-name小组件。用于减少一些表的关连操作和冗余字段。优化代码结构。扩展也方便&#xff0c;写不同的枚举就行了。 具体用法&#xff1a; {NameCacheUser.USER.getName(userId);NameCacheUser.ACCOUNT.getN…

GAN:WGAN前作

WGAN前作&#xff1a;有原则的方法来训练GANs 论文&#xff1a;https://arxiv.org/abs/1701.04862 发表&#xff1a;ICLR 2017 本文是wgan三部曲的第一部。文中并没有引入新的算法&#xff0c;而是标是朝着完全理解生成对抗网络的训练动态过程迈进理论性的一步。 文中基本是…