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用模块pytz来转换时区
Aug 19 Python
python实现应用程序在右键菜单中添加打开方式功能
Jan 09 Python
分享6个隐藏的python功能
Dec 07 Python
python list是否包含另一个list所有元素的实例
May 04 Python
python3中zip()函数使用详解
Jun 29 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
Oct 22 Python
在python下读取并展示raw格式的图片实例
Jan 24 Python
python实现爬取百度图片的方法示例
Jul 06 Python
Django ModelForm组件使用方法详解
Jul 23 Python
python实现微信打飞机游戏
Mar 24 Python
Python实现爬取网页中动态加载的数据
Aug 17 Python
Python Selenium实现无可视化界面过程解析
Aug 25 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中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
php 多文件上传的实现实例
2016/10/23 PHP
php基于session锁防止阻塞请求的方法分析
2017/08/07 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
JS实现侧悬浮浮动实例代码
2013/11/29 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
整理Python最基本的操作字典的方法
2015/04/24 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
Python中getpass模块无回显输入源码解析
2018/01/11 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
python解释器spython使用及原理解析
2019/08/24 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
党员干部公开承诺书
2014/03/26 职场文书
祖国在我心中的演讲稿
2014/05/04 职场文书
村级四风对照检查材料
2014/08/24 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
2015小学新教师个人工作总结
2015/10/14 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
JS代码编译器Monaco使用方法
2021/06/11 Javascript