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实现的数据结构与算法之链表详解
Apr 22 Python
将Emacs打造成强大的Python代码编辑工具
Nov 20 Python
Python随机生成带特殊字符的密码
Mar 02 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
Apr 27 Python
python3+opencv3识别图片中的物体并截取的方法
Dec 05 Python
详解pandas数据合并与重塑(pd.concat篇)
Jul 09 Python
python plotly绘制直方图实例详解
Jul 22 Python
python join方法使用详解
Jul 30 Python
python编程进阶之类和对象用法实例分析
Feb 21 Python
PyQt5结合matplotlib绘图的实现示例
Sep 15 Python
pytorch实现手写数字图片识别
May 20 Python
FP-growth算法发现频繁项集——发现频繁项集
Jun 24 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数组操作汇总 php数组的使用技巧
2011/07/17 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
PHP输出日历表代码实例
2015/03/27 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
Python导入txt数据到mysql的方法
2015/04/08 Python
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
Django数据库操作的实例(增删改查)
2017/09/04 Python
python3 pygame实现接小球游戏
2019/05/14 Python
解决Python二维数组赋值问题
2019/11/28 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
大学生专业个人学习的自我评价
2013/10/26 职场文书
手机业务员岗位职责
2013/12/13 职场文书
甜美蛋糕店创业计划书
2014/01/30 职场文书
学校后勤岗位职责
2014/02/19 职场文书
幼儿园毕业园长感言
2014/02/24 职场文书
培训研修方案
2014/06/06 职场文书
比赛口号大全
2014/06/10 职场文书
正风肃纪查摆剖析材料
2014/10/10 职场文书
四年级学生期末评语
2014/12/26 职场文书
特岗教师个人总结
2015/02/10 职场文书
认真学习保证书
2015/02/26 职场文书
工作保证书怎么写
2015/02/28 职场文书