随机发牌_用Python制作4人扑克牌发牌游戏

本文介绍了一个4人扑克牌游戏的发牌逻辑,通过Python编程实现。包括Card类代表单张牌,Hand类表示玩家手牌,Poke类表示一副牌。主要涉及牌的生成、洗牌、发牌等操作。最后展示了简单的代码实现。
摘要由CSDN通过智能技术生成

d174e9f3c00eb68aafcfe77b0e29e268.png

扑克牌算是老少皆宜的经典款游戏之一,玩法多样,但万变不离其宗,想要编写扑克牌类游戏,首先得整理清楚发牌的逻辑。

893753ff9ae4e25365c88edb6ead638a.png

4339065f45816a51df2b30aeab62fb86.png

1. 游戏介绍

4名牌手打牌,电脑随机將52张牌(不合大、小王)发给4名牌手,并在屏幕上显示每位牌手的牌。

2. 面向对象程序设计

既然只做发牌,那么我们就只需要整理清楚发牌的过程中所牵涉到的对象即可。其实整个发牌的过程中,所牵扯到的只有牌,但分三种不同的情况显示,第一个是单张牌(Card),第二个是一整副牌(Poke),第三个是玩家手里的牌(Hand),三个对象类编写出来,我们就可以很清晰地完成整个发牌的过程。

3. 程序设计步骤

设计类:发牌程序设计出三个类:Card类、Hand类和Poke类。

Card类:Card类代表一张牌,其中,FaceNum字段指的是牌面数字1~13,Suit字段指的是花色,”梅”为梅花,”方”为方块,”红”为红桃,”黑”为黑桃。

Hand类:Hand类代表手牌(一个玩家手里拿的牌),可以认为是一位牌手手里的牌,其中,cards列表变量存储牌手手中的牌。可以增加牌、清空手里的牌、把一张牌给别的牌手等操作。

Poke类:Poke类代表一副牌,我们可以将一副牌看作是有52张牌的牌手,所以继承Hand类。由于其中cards列表变量要存储52张牌,而且要进行发牌、洗牌操作,所以增加如下的方法。

主程序:主程序比较简单,因为有四个牌手,所以生成players列表存储初始化的四位牌手。生成一副牌的对象实例poke1,调用populate()方法生成有52张牌的一副牌,调用huffle()方法洗牌打乱顺序,调用deal(players,13)方法分别给每位玩家发13张牌,最后示四位牌手所有的牌。

4. 代码实现

Card类:

1>定义牌面数字及花色

2>定义初始化构造方法

3>定义牌面花色+数字拼接字符串显示方法

4>定义翻牌方法

5>定义牌的顺序号

a1c2d3b90439b7775b2d5fc07d386835.png

0c44c1b8ac3dc8eabc9a364b4a961495.png

Hand类:

1>定义初始化构造方法

2>定义牌面花色+数字拼接字符串显示方法

3>定义清空扑克牌的方法

4>定义追加扑克牌的方法

5>定义给予扑克牌的方法

9a8f65dce730251cf2db8b6a772df7e7.png

Poke类:

1>定义生成一副牌的方法

2>定义洗牌的方法

3>定义发牌的方法

5bd804f3e82f0ed88741b73313ca391f.png

主程序定义:

789255dc9f802f7c2389b0e7ac676c83.png

运行结果:

015be10d4d01025cac12834719ad5d57.png

完成!是不是很简单呢?自己试试看吧~

ed3fcf51-f552-eb11-8da9-e4434bdf6706.png

注:本文基于64位windows系统(鼠标右键点击桌面“此电脑”图标——属性可查看电脑系统版本)、python3.x(pycharm自动安装的版本, 3.0以上)。

文中代码内容所使用的工具是pycharm-community-2020.1,实践中如有碰到问题,可留言提问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值