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之画圈还不简单吗?
Sep 20 Python
深入理解python中的select模块
Apr 23 Python
基于hashlib模块--加密(详解)
Jun 21 Python
python随机取list中的元素方法
Apr 08 Python
用Python将mysql数据导出成json的方法
Aug 21 Python
Python设计模式之适配器模式原理与用法详解
Jan 15 Python
python基于TCP实现的文件下载器功能案例
Dec 10 Python
Python读取文件内容为字符串的方法(多种方法详解)
Mar 04 Python
python3 sorted 如何实现自定义排序标准
Mar 12 Python
python 递归调用返回None的问题及解决方法
Mar 16 Python
python控制台打印log输出重复的解决方法
May 14 Python
Django分页器的用法你都了解吗
May 26 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
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
在Yii框架中使用PHP模板引擎Twig的例子
2014/06/13 PHP
php发送邮件的问题详解
2015/06/22 PHP
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
2016/05/13 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
利用jQuery实现简单的拖曳效果实例代码
2017/10/20 jQuery
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
Vue router安装及使用方法解析
2020/12/02 Vue.js
使用python遍历指定城市的一周气温
2017/03/31 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
在python中实现将一张图片剪切成四份的方法
2018/12/05 Python
python3实现表白神器
2019/04/09 Python
python全栈知识点总结
2019/07/01 Python
Python 获取项目根路径的代码
2019/09/27 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
Django nginx配置实现过程详解
2020/09/10 Python
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
护理专业毕业生自我鉴定
2013/10/08 职场文书
业务总经理岗位职责
2014/02/03 职场文书
新农村建设典型材料
2014/05/31 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
如何书写你的职业生涯规划书?
2019/06/27 职场文书