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实现的一个自动售饮料程序代码分享
Aug 25 Python
python中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 Python
初学Python函数的笔记整理
Apr 07 Python
使用相同的Apache实例来运行Django和Media文件
Jul 22 Python
python列表使用实现名字管理系统
Jan 30 Python
Python编写合并字典并实现敏感目录的小脚本
Feb 26 Python
python GUI图形化编程wxpython的使用
Jul 19 Python
pycharm安装及如何导入numpy
Apr 03 Python
django rest framework 过滤时间操作
Jul 12 Python
Python命名空间及作用域原理实例解析
Aug 12 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
Dec 14 Python
python实现excel公式格式化的示例代码
Dec 23 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
解析php中的fopen()函数用打开文件模式说明
2013/06/20 PHP
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
php文件上传的例子及参数详解
2013/12/12 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
基于jquery的无刷新分页技术
2011/06/11 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
一个仿糯米弹框效果demo
2014/07/22 Javascript
JS获取浏览器语言动态加载JS文件示例代码
2014/10/31 Javascript
使用纯javascript实现放大镜效果
2015/03/18 Javascript
JQ技术实现注册页面带有校验密码强度
2015/07/27 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
微信小程序 实现tabs选项卡效果实例代码
2016/10/31 Javascript
vue高德地图之玩转周边
2017/06/16 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
python查询sqlite数据表的方法
2015/05/08 Python
使用Python读取大文件的方法
2018/02/11 Python
Python实现的简单计算器功能详解
2018/08/25 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
python pygame实现球球大作战
2019/11/25 Python
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
英国高街电视:High Street TV
2018/05/22 全球购物
台湾旅游网站:灿星旅游
2018/10/11 全球购物
情侣吵架检讨书
2014/02/05 职场文书
银行求职信
2014/05/31 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
2014年底个人工作总结
2015/03/10 职场文书
小学音乐课教学反思
2016/02/18 职场文书
关于nginx 实现jira反向代理的问题
2021/09/25 Servers