python模拟斗地主发牌


Posted in Python onApril 22, 2020

本文实例为大家分享了python模拟斗地主发牌的具体代码,供大家参考,具体内容如下

题目:趣味百题之斗地主

扑克牌是一种非常大众化的游戏,在计算机中有很多与扑克牌有关的游戏。例如,在Windows操作系统下自带的纸牌、红心大战等。在扑克牌类的游戏中,往往都需要执行洗牌操作,就是将一副牌完全打乱,使其排列没有规律。

要求:

1、54张扑克牌发个3个玩家,农民17张,地主20张。
2、自动生成一幅扑克牌组;洗牌;发牌到玩家手中;将玩家手中扑克牌按花色大小整理好。**

'''
趣味百题-发扑克牌-斗地主
请编程实现发扑克牌

Version: 0.1
Author: jasn
Date: 2020-01-01

主要知识点:random的用法,类的定义和调用
主要功能点:用Python的类实现斗地主的初始化、洗牌、发牌、抢地主、理牌、花色对应。代码如下
'''
import random

class doudizhu:
 #定义54张牌
 def __init__(self):
  self.a=[]
  for i in range(54):
   self.a.append(i)
 #洗牌
 def xipai(self):
  random.shuffle(self.a) #洗牌
  n = random.randint(1, 54)
  b = self.a[:n] # 从n的位置切牌
  c = self.a[n:]
  self.a = b + c

  #发牌
 def fapai(self):
  self.user1=self.a[0:-3:3] #玩家1,获得牌的顺序为 0,3,6,9...
  self.user2=self.a[1:-3:3] #玩家2,获得牌的顺序为 1,4,7,10...
  self.user3=self.a[2:-3:3] #玩家3,获得牌的顺序为 2,5,8,11...
  self.user4=self.a[-3:] #底牌 ,顺序为51,52,53
 #抢地主
 def qiangdizhu(self):
  i=random.randint(1,3)
  self.dizhu=i #定义一个地主的实例
  if i == 1:
   self.user1+=self.user4
  if i == 2:
   self.user2+=self.user4
  if i == 3:
   self.user3+=self.user4
 #码牌
 def mapai(self):
  self.user1.sort(reverse=True) ##从小到大码牌
  self.user2.sort(reverse=True)
  self.user3.sort(reverse=True)
 #牌序和花色一一对应
 def yingshe(self):
  huase = [(0, '方片3'), (1, '梅花3'), (2, '红桃3'), (3, '黑桃3'),
     (4, '方片4'), (5, '梅花4'), (6, '红桃4'), (7, '黑桃4'),
     (8, '方片5'), (9, '梅花5'), (10, '红桃5'), (11, '黑桃5'),
     (12, '方片6'), (13, '梅花6'), (14, '红桃6'), (15, '黑桃6'),
     (16, '方片7'), (17, '梅花7'), (18, '红桃7'), (19, '黑桃7'),
     (20, '方片8'), (21, '梅花8'), (22, '红桃8'), (23, '黑桃8'),
     (24, '方片9'), (25, '梅花9'), (26, '红桃9'), (27, '黑桃9'),
     (28, '方片10'), (29, '梅花10'), (30, '红桃10'), (31, '黑桃10'),
     (32, '方片J'), (33, '梅花J'), (34, '红桃J'), (35, '黑桃J'),
     (36, '方片Q'), (37, '梅花Q'), (38, '红桃Q'), (39, '黑桃Q'),
     (40, '方片K'), (41, '梅花K'), (42, '红桃K'), (43, '黑桃K'),
     (44, '方片A'), (45, '梅花A'), (46, '红桃A'), (47, '黑桃A'),
     (48, '方片2'), (49, '梅花2'), (50, '红桃2'), (51, '黑桃2'),
     (52, 'BlackJoker'), (53, 'RedJoker')]
  zdpai = dict(huase)
  paiuser1=''
  for i in range(len(self.user1)):
   paiuser1+=zdpai[self.user1[i]]+' ' #以字符串的形式将牌储存起来
  paiuser2 = ''
  for i in range(len(self.user2)):
   paiuser2 += zdpai[self.user2[i]] + ' '
  paiuser3 = ''
  for i in range(len(self.user3)):
   paiuser3 += zdpai[self.user3[i]] + ' '
  paiuser4 = ''
  for i in range(len(self.user4)):
   paiuser4 += zdpai[self.user4[i]] + ' '

  self.user1 = paiuser1 #把花色对应好的牌的序列重新赋给三个玩家的实例属性
  self.user2 = paiuser2
  self.user3 = paiuser3
  self.user4 = paiuser4


if __name__ == '__main__':
 Player=doudizhu() #将类辅助给playes,方便调用
 Player.xipai()
 Player.fapai()
 Player.qiangdizhu()
 Player.mapai()
 Player.yingshe()

print('本局地主是:玩家{}'.format(Player.dizhu))
print('底牌:',Player.user4)
print('玩家一:',Player.user1)
print('玩家二:',Player.user2)
print('玩家三:',Player.user3)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中zip()方法应用实例分析
Apr 16 Python
Python用模块pytz来转换时区
Aug 19 Python
python 内置函数filter
Jun 01 Python
对Python中DataFrame按照行遍历的方法
Apr 08 Python
基于python神经卷积网络的人脸识别
May 24 Python
python 设置输出图像的像素大小方法
Jul 04 Python
爬虫代理池Python3WebSpider源代码测试过程解析
Dec 20 Python
python 按钮点击关闭窗口的实现
Mar 04 Python
Python自带的IDE在哪里
Jul 01 Python
Idea安装python显示无SDK问题解决方案
Aug 12 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
Sep 16 Python
Python之qq自动发消息的示例代码
Feb 18 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
Apr 22 #Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
Apr 22 #Python
matlab中二维插值函数interp2的使用详解
Apr 22 #Python
python 一维二维插值实例
Apr 22 #Python
Numpy一维线性插值函数的用法
Apr 22 #Python
python数据处理——对pandas进行数据变频或插值实例
Apr 22 #Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
Apr 22 #Python
You might like
php的一些小问题
2010/07/03 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
javascript call和apply方法
2008/11/24 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
ExtJS下grid的一些属性说明
2009/12/13 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
js获取页面description的方法
2015/05/21 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
Python实现简单遗传算法(SGA)
2018/01/29 Python
Python使用combinations实现排列组合的方法
2018/11/13 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
Python基于内置函数type创建新类型
2020/10/22 Python
关于Python错误重试方法总结
2021/01/03 Python
详解HTML5中的标签
2015/06/19 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
美国眼镜网:GlassesUSA
2017/09/07 全球购物
俄罗斯游戏商店:Buka
2020/03/01 全球购物
财务会计专业求职信范文
2013/12/31 职场文书
纠风工作实施方案
2014/03/15 职场文书
中学生操行评语大全
2014/04/24 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
预备党员半年考察意见
2015/06/01 职场文书
实施意见格式范本
2015/06/05 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
分享15个Webpack实用的插件!!!
2021/03/31 Javascript
Python IO文件管理的具体使用
2022/03/20 Python
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技