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 相关文章推荐
Ubuntu安装Jupyter Notebook教程
Oct 18 Python
python 文件转成16进制数组的实例
Jul 09 Python
解决PyCharm同目录下导入模块会报错的问题
Oct 13 Python
Python3 jupyter notebook 服务器搭建过程
Nov 30 Python
Django中使用haystack+whoosh实现搜索功能
Oct 08 Python
python类中super() 的使用解析
Dec 19 Python
python字典和json.dumps()的遇到的坑分析
Mar 11 Python
浅谈Python中的生成器和迭代器
Jun 19 Python
Python操作Elasticsearch处理timeout超时
Jul 17 Python
快速解释如何使用pandas的inplace参数的使用
Jul 23 Python
python 如何用terminal输入参数
May 25 Python
python_tkinter弹出对话框创建
Mar 20 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
非常不错的MySQL优化的8条经验
2008/03/24 PHP
更改localhost为其他名字的方法
2014/02/10 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
php中opendir函数用法实例
2014/11/15 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
javascript工具库代码
2012/03/29 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
JavaScript中 ES6变量的结构赋值
2018/07/10 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
Python多线程编程简单介绍
2015/04/13 Python
详解在Python中处理异常的教程
2015/05/24 Python
python基于右递归解决八皇后问题的方法
2015/05/25 Python
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
python按行读取文件并找出其中指定字符串
2019/08/08 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
函授毕业生自我鉴定
2013/11/06 职场文书
行政总监岗位职责
2013/12/05 职场文书
八年级历史教学反思
2014/01/10 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
毕业生工作求职信
2014/06/30 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
护士年终个人总结
2015/02/13 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python
vue组件vue-esign实现电子签名
2022/04/21 Vue.js