python模拟斗地主发牌


Posted in Python onApril 22, 2020

本文实例为大家分享了python模拟斗地主发牌的具体代码,供大家参考,具体内容如下

题目:趣味百题之斗地主

扑克牌是一种非常大众化的游戏,在计算机中有很多与扑克牌有关的游戏。例如,在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通过pil将图片转换成黑白效果的方法
Mar 16 Python
Python实现优先级队列结构的方法详解
Jun 02 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
Python实现简单生成验证码功能【基于random模块】
Feb 10 Python
对python当中不在本路径的py文件的引用详解
Dec 15 Python
Python中函数参数匹配模型详解
Jun 09 Python
Python利用pandas处理Excel数据的应用详解
Jun 18 Python
详解numpy.meshgrid()方法使用
Aug 01 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
如何基于python实现脚本加密
Dec 28 Python
Python非单向递归函数如何返回全部结果
Dec 18 Python
Python用Jira库来操作Jira
Dec 28 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
Apr 22 #Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
Apr 22 #Python
matlab中二维插值函数interp2的使用详解
Apr 22 #Python
python 一维二维插值实例
Apr 22 #Python
Numpy一维线性插值函数的用法
Apr 22 #Python
python数据处理——对pandas进行数据变频或插值实例
Apr 22 #Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
Apr 22 #Python
You might like
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
2013/06/24 PHP
php设计模式之单例模式使用示例
2014/01/20 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
nodejs win7下安装方法
2012/05/24 NodeJs
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
2013/05/19 Javascript
JavaScript数组常用操作技巧汇总
2014/11/17 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
轮播图组件js代码
2016/08/08 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
几个常见的消息中间件(MOM)
2014/01/08 面试题
无罪辩护词范文
2015/05/21 职场文书
音乐会主持人开场白
2015/05/28 职场文书
z-index不起作用
2021/03/31 HTML / CSS
用Python爬取某乎手机APP数据
2021/06/15 Python
Python Pandas常用函数方法总结
2021/06/15 Python
Python anaconda安装库命令详解
2021/10/16 Python
pandas中关于apply+lambda的应用
2022/02/28 Python