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连接oracle数据库实例
Oct 17 Python
python使用urlparse分析网址中域名的方法
Apr 15 Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
Python TestCase中的断言方法介绍
May 02 Python
Python中将两个或多个list合成一个list的方法小结
May 12 Python
Python字符串的一些操作方法总结
Jun 10 Python
python常用函数与用法示例
Jul 02 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
Mar 09 Python
Python使用Excel将数据写入多个sheet
May 16 Python
python实现计算器简易版
Dec 17 Python
用基于python的appium爬取b站直播消费记录
Apr 17 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/08/01 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
php二维码生成以及下载实现
2017/09/28 PHP
php实例化一个类的具体方法
2019/09/19 PHP
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
解决jquery操作checkbox火狐下第二次无法勾选问题
2014/02/10 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
JavaScript中this的四个绑定规则总结
2016/09/26 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
2018/07/26 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
Vue 实现拨打电话操作
2020/11/16 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
Python中使用asyncio 封装文件读写
2016/09/11 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
原装进口全世界:天猫国际
2016/08/03 全球购物
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
采用怎样的方法保证数据的完整性
2013/12/02 面试题
CSS实现fullpage.js全屏滚动效果的示例代码
2021/03/24 HTML / CSS
后勤人员自我评价怎么写
2013/09/19 职场文书
高分子材料与工程专业推荐信
2013/12/01 职场文书
养殖人员的创业计划书范文
2013/12/26 职场文书
办加油卡单位介绍信
2014/01/09 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
法人身份证明书
2014/10/08 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书