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的汉字转GBK码实现代码
Feb 19 Python
python实现2014火车票查询代码分享
Jan 10 Python
python使用BeautifulSoup分页网页中超链接的方法
Apr 04 Python
快速排序的算法思想及Python版快速排序的实现示例
Jul 02 Python
python中文件变化监控示例(watchdog)
Oct 16 Python
python环境路径配置以及命令行运行脚本
Apr 02 Python
python实现列表的排序方法分享
Jul 01 Python
Python中IP地址处理IPy模块的方法
Aug 16 Python
pytorch实现特殊的Module--Sqeuential三种写法
Jan 15 Python
Keras自动下载的数据集/模型存放位置介绍
Jun 19 Python
详细分析Python可变对象和不可变对象
Jul 09 Python
Python 创建守护进程的示例
Sep 29 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程序
2006/10/09 PHP
php PDO中文乱码解决办法
2009/07/20 PHP
php设计模式之委托模式
2016/02/13 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
syntaxhighlighter 使用方法
2007/07/02 Javascript
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
浅谈对Angular中的生命周期钩子的理解
2017/07/31 Javascript
vue2.0 路由模式mode="history"的作用
2018/10/18 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
python创建线程示例
2014/05/06 Python
python抓取百度首页的方法
2015/05/19 Python
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
Django实现跨域请求过程详解
2019/07/25 Python
解析python的局部变量和全局变量
2019/08/15 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
手机配件第一品牌:ZAGG
2017/05/28 全球购物
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
Currentbody法国:健康与美容高科技产品
2020/08/16 全球购物
心理健康教育制度
2014/01/27 职场文书
会计与审计专业自荐信范文
2014/03/15 职场文书
职称评定自我鉴定
2014/03/18 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
公司应聘求职信
2014/06/21 职场文书
教育见习报告范文
2014/11/03 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
创业计划书之书店
2019/09/10 职场文书