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实现在sqlite动态创建表的方法
May 08 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
Mar 16 Python
python+selenium开发环境搭建图文教程
Aug 11 Python
转换科学计数法的数值字符串为decimal类型的方法
Jul 16 Python
使用python根据端口号关闭进程的方法
Nov 06 Python
Python闭包思想与用法浅析
Dec 27 Python
树莓派与PC端在局域网内运用python实现即时通讯
Jun 22 Python
python实现一个点绕另一个点旋转后的坐标
Dec 04 Python
总结Pyinstaller的坑及终极解决方法(小结)
Sep 21 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
python实现的web监控系统
Apr 27 Python
python opencv旋转图片的使用方法
Jun 04 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
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
php中Ioc(控制反转)和Di(依赖注入)
2017/05/07 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
Jquery 常用方法经典总结
2010/01/28 Javascript
扩展jquery实现客户端表格的分页、排序功能代码
2011/03/16 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
2016/05/28 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
vuejs父子组件通信的问题
2017/01/11 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
JS继承定义与使用方法简单示例
2020/02/19 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
Python实现k-means算法
2018/02/23 Python
说说如何遍历Python列表的方法示例
2019/02/11 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
TensorFLow 不同大小图片的TFrecords存取实例
2020/01/20 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
深入解析HTML5的IndexedDB索引数据库
2015/09/14 HTML / CSS
最耐用行李箱,一箱永流传:Briggs & Riley(全球终身保修)
2017/12/07 全球购物
建筑专业自荐信
2013/10/18 职场文书
大学生家政服务项目创业计划书
2014/01/30 职场文书
优秀大学生职业生涯规划书
2014/02/27 职场文书
三八节主持词
2014/03/17 职场文书
勤俭节约演讲稿
2014/05/08 职场文书
励志演讲稿500字
2014/08/21 职场文书
Python中相见恨晚的技巧
2021/04/13 Python