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实现在线程里运行scrapy的方法
Apr 07 Python
python 统计代码行数简单实例
May 04 Python
Python实现读取并保存文件的类
May 11 Python
用tensorflow搭建CNN的方法
Mar 05 Python
Python判断telnet通不通的实例
Jan 26 Python
Python常见的pandas用法demo示例
Mar 16 Python
对django中foreignkey的简单使用详解
Jul 28 Python
python tornado使用流生成图片的例子
Nov 18 Python
python操作cfg配置文件方式
Dec 22 Python
django执行原始查询sql,并返回Dict字典例子
Apr 01 Python
Python基础之常用库常用方法整理
Apr 30 Python
Python答题卡识别并给出分数的实现代码
Jun 22 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数组去重实例及分析
2013/11/26 PHP
PHP实现的json类实例
2015/07/28 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
2016/12/09 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
2016/05/18 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
js实现简单扫雷
2020/11/27 Javascript
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
python实现socket客户端和服务端简单示例
2014/02/24 Python
python中MySQLdb模块用法实例
2014/11/10 Python
Python利用Beautiful Soup模块搜索内容详解
2017/03/29 Python
Python部署web开发程序的几种方法
2017/05/05 Python
Python之pandas读写文件乱码的解决方法
2018/04/20 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
使用Django搭建web服务器的例子(最最正确的方式)
2019/08/29 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
手机促销活动方案
2014/02/05 职场文书
岗位职责说明书
2014/05/07 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
第一书记观后感
2015/06/08 职场文书
护士业务学习心得体会
2016/01/25 职场文书
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis