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的Django框架结合jQuery实现AJAX购物车页面
Apr 11 Python
python中reload(module)的用法示例详解
Sep 15 Python
Python实现的堆排序算法示例
Apr 29 Python
python3实现基于用户的协同过滤
May 31 Python
Tensorflow中使用tfrecord方式读取数据的方法
Jun 19 Python
详解python 注释、变量、类型
Aug 10 Python
python清除字符串前后空格函数的方法
Oct 21 Python
Python re 模块findall() 函数返回值展现方式解析
Aug 09 Python
python-xpath获取html文档的部分内容
Mar 06 Python
基于django micro搭建网站实现加水印功能
May 22 Python
python连接mongodb数据库操作数据示例
Nov 30 Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 04 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面向对象 字段的声明与使用
2012/06/14 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
2020/10/30 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
jQuery中ajax和post处理json的不同示例对比
2014/11/02 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
vuejs如何配置less
2017/04/25 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
layui table 参数设置方法
2018/08/14 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
2019/09/25 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
JS常用排序方法实例代码解析
2020/03/03 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
详解Python装饰器
2019/03/25 Python
selenium+python环境配置教程详解
2019/05/28 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
python 使用tkinter+you-get实现视频下载器
2020/11/17 Python
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
在HTML5中使用MathML数学公式的简单讲解
2016/02/19 HTML / CSS
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
大学生志愿者感言
2014/01/15 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
七年级作文之下雨天
2019/12/23 职场文书
详解Go与PHP的语法对比
2021/05/29 PHP