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网络编程学习笔记(四):域名系统
Jun 09 Python
Python选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
为Python的web框架编写MVC配置来使其运行的教程
Apr 30 Python
python 默认参数问题的陷阱
Feb 29 Python
python实现五子棋小游戏
Mar 25 Python
python使用多线程编写tcp客户端程序
Sep 02 Python
简单了解Python读取大文件代码实例
Dec 18 Python
python with (as)语句实例详解
Feb 04 Python
python如何求圆的面积
Jul 01 Python
一个入门级python爬虫教程详解
Jan 27 Python
python将图片转为矢量图的方法步骤
Mar 30 Python
Python实现批量将文件复制到新的目录中再修改名称
Apr 12 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操作xml代码
2010/06/17 PHP
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
jquery $.ajax入门应用一
2008/11/19 Javascript
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
Jquery时间验证和转换工具小例子
2013/07/01 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
javascript在子页面中函数无法调试问题解决方法
2014/01/17 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
Vue源码解读之Component组件注册的实现
2018/08/24 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
HTML5 Canvas实现放大镜效果示例
2020/03/25 HTML / CSS
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
自我鉴定书
2014/03/24 职场文书
开学典礼策划方案
2014/05/28 职场文书
政府领导干部个人对照检查材料思想汇报
2014/09/24 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
个人求职信格式范文
2015/03/20 职场文书
离婚答辩状范文
2015/05/22 职场文书
教师远程培训心得体会
2016/01/09 职场文书
2019年公司快递收发管理制度模板
2019/11/20 职场文书
如何在CSS中绘制曲线图形及展示动画
2021/05/24 HTML / CSS
Spring Boot 使用 Spring-Retry 进行重试框架
2022/04/24 Java/Android