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实现多线程下载文件的代码实例
Jun 01 Python
python使用socket远程连接错误处理方法
Apr 29 Python
Python自动生产表情包
Mar 17 Python
django基础之数据库操作方法(详解)
May 24 Python
Python实现的远程登录windows系统功能示例
Jun 21 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
基于python实现学生管理系统
Oct 17 Python
详解Python读取yaml文件多层菜单
Mar 23 Python
Django框架登录加上验证码校验实现验证功能示例
May 23 Python
Python的Tkinter点击按钮触发事件的例子
Jul 19 Python
python中time库的实例使用方法
Oct 31 Python
使用python采集Excel表中某一格数据
May 14 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比较相似字符串的方法
2015/06/05 PHP
php实现的操作excel类详解
2016/01/15 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
document.createElement()用法
2013/03/13 Javascript
js 自定义个性下拉选择框示例
2013/08/20 Javascript
使用 Node.js 做 Function Test实现方法
2013/10/25 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
layui radio性别单选框赋值方法
2018/08/15 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
微信小程序实现蓝牙打印
2019/09/23 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
python selenium自动上传有赞单号的操作方法
2018/07/05 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
Pygame框架实现飞机大战
2020/08/07 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
销售人员职业生涯规划范文
2014/03/01 职场文书
赔偿协议书范本
2014/09/12 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
升学宴答谢词
2015/01/05 职场文书
涪陵白鹤梁导游词
2015/02/09 职场文书
格列佛游记读书笔记
2015/06/30 职场文书