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实现红包裂变算法
Feb 16 Python
总结python爬虫抓站的实用技巧
Aug 09 Python
python如何压缩新文件到已有ZIP文件
Mar 14 Python
python中协程实现TCP连接的实例分析
Oct 14 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
Django 模型类(models.py)的定义详解
Jul 19 Python
python+selenium select下拉选择框定位处理方法
Aug 24 Python
python文字转语音实现过程解析
Nov 12 Python
详解opencv中画圆circle函数和椭圆ellipse函数
Dec 27 Python
Python 实现自动获取种子磁力链接方式
Jan 16 Python
Django REST Swagger实现指定api参数
Jul 07 Python
django有哪些好处和优点
Sep 01 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
慎用preg_replace危险的/e修饰符(一句话后门常用)
2013/06/19 PHP
JavaScript 不只是脚本
2007/05/30 Javascript
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
js 链式延迟执行DOME
2012/01/04 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
详解如何较好的使用js
2016/12/16 Javascript
Vuex简单入门
2017/04/19 Javascript
使用node.js实现微信小程序实时聊天功能
2018/08/13 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
Python模块学习 datetime介绍
2012/08/27 Python
用python实现的去除win下文本文件头部BOM的代码
2013/02/10 Python
Python格式化css文件的方法
2015/03/10 Python
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
Python批处理更改文件名os.rename的方法
2018/10/26 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
python创造虚拟环境方法总结
2019/03/04 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
2019/06/25 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
Django 设置多环境配置文件载入问题
2020/02/25 Python
python将dict中的unicode打印成中文实例
2020/05/11 Python
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
《毛主席在花山》教学反思
2014/04/20 职场文书
统计员岗位职责范本
2015/04/14 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
python脚本框架webpy模板赋值实现
2021/11/20 Python