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判断给定的字符串是否是有效日期的方法
May 13 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
Dec 19 Python
pyqt5 获取显示器的分辨率的方法
Jun 18 Python
python中的单引号双引号区别知识点总结
Jun 23 Python
Python编写通讯录通过数据库存储实现模糊查询功能
Jul 18 Python
python实现微信小程序用户登录、模板推送
Aug 28 Python
python实现多进程按序号批量修改文件名的方法示例
Dec 30 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
Mar 16 Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 Python
python 多线程爬取壁纸网站的示例
Feb 20 Python
仅用几行Python代码就能复制她的U盘文件?
Jun 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
memcache命令启动参数中文解释
2014/01/13 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
2014/12/18 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
javascript静态的url如何传递
2007/05/03 Javascript
摘自百度的图片轮换效果代码
2007/11/19 Javascript
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
使用Ajax生成的Excel文件并下载的实例
2016/11/21 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
Node.js 使用流实现读写同步边读边写功能
2017/09/11 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
Django 开发环境配置过程详解
2019/07/18 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
python关于倒排列的知识点总结
2020/10/13 Python
Python爬虫回测股票的实例讲解
2021/01/22 Python
CSS3教程(9):设置RGB颜色
2009/04/02 HTML / CSS
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
区优秀教师事迹材料
2014/02/10 职场文书
村干部培训班主持词
2014/03/28 职场文书
公共场所标语
2014/06/30 职场文书
银行领导班子四风对照检查材料
2014/09/27 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
Golang 对es的操作实例
2022/04/20 Golang
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技