python模拟实现斗地主发牌


Posted in Python onJanuary 07, 2020

题目:趣味百题之斗地主

扑克牌是一种非常大众化的游戏,在计算机中有很多与扑克牌有关的游戏。例如,在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多进程实现进程间通信实例
Nov 24 Python
python实现windows下文件备份脚本
May 27 Python
python迭代dict的key和value的方法
Jul 06 Python
Python+OpenCV图片局部区域像素值处理改进版详解
Jan 23 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
Apr 01 Python
Python的对象传递与Copy函数使用详解
Dec 26 Python
Python猴子补丁知识点总结
Jan 05 Python
关于Keras Dense层整理
May 21 Python
Python判断远程服务器上Excel文件是否被人打开的方法
Jul 13 Python
基于python图书馆管理系统设计实例详解
Aug 05 Python
基于python requests selenium爬取excel vba过程解析
Aug 12 Python
OpenCV图像变换之傅里叶变换的一些应用
Jul 26 Python
python全局变量引用与修改过程解析
Jan 07 #Python
python__new__内置静态方法使用解析
Jan 07 #Python
Python常用模块sys,os,time,random功能与用法实例分析
Jan 07 #Python
python单例设计模式实现解析
Jan 07 #Python
Python字典生成式、集合生成式、生成器用法实例分析
Jan 07 #Python
linux环境下安装python虚拟环境及注意事项
Jan 07 #Python
Python包,__init__.py功能与用法分析
Jan 07 #Python
You might like
基于mysql的论坛(3)
2006/10/09 PHP
php连接数据库代码应用分析
2011/05/29 PHP
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
探讨捕获php错误信息方法的详解
2013/06/09 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
JQuery中的html()、text()、val()区别示例介绍
2014/09/01 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
javascript学习小结之prototype
2015/12/03 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
Vue Socket.io源码解读
2018/02/07 Javascript
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
python实现简易版计算器
2020/06/22 Python
Python切片操作实例分析
2018/03/16 Python
Anaconda下安装mysql-python的包实例
2018/06/11 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
pycharm实现猜数游戏
2020/12/07 Python
eBay美国官网:eBay.com
2020/10/24 全球购物
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
质检部部长职责
2013/12/16 职场文书
优秀士兵先进事迹
2014/02/06 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
神龙架导游词
2015/02/11 职场文书
敬老院活动感想
2015/08/07 职场文书
六年级作文之预言作文
2019/10/25 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书