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访问纯真IP数据库脚本分享
Jun 29 Python
完美解决python遍历删除字典里值为空的元素报错问题
Sep 11 Python
python 定义给定初值或长度的list方法
Jun 23 Python
Python 监测文件是否更新的方法
Jun 10 Python
FFrpc python客户端lib使用解析
Aug 24 Python
Django实现WebSSH操作物理机或虚拟机的方法
Nov 06 Python
Python全局锁中如何合理运用多线程(多进程)
Nov 06 Python
python实现while循环打印星星的四种形状
Nov 23 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
Mar 26 Python
python交互模式基础知识点学习
Jun 18 Python
python3实现将json对象存入Redis以及数据的导入导出
Jul 16 Python
Python面试不修改数组找出重复的数字
May 20 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 iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
PHP中for与foreach的区别分析
2011/03/09 PHP
ThinkPHP分页类使用详解
2014/03/05 PHP
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
Jquery 学习笔记(一)
2009/10/13 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
使用JQuery进行跨域请求
2010/01/25 Javascript
JavaScript闭包函数访问外部变量的方法
2014/08/27 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
2018/12/07 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
Python判断Abundant Number的方法
2015/06/15 Python
解决Python传递中文参数的问题
2015/08/04 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
python使用requests模块实现爬取电影天堂最新电影信息
2019/04/03 Python
Python中的xlrd模块使用原理解析
2020/05/21 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
css3选择器基本介绍
2014/12/15 HTML / CSS
春秋航空官方网站:Spring Airlines
2017/09/27 全球购物
澳洲的服装老品牌:SABA
2018/02/06 全球购物
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
水产养殖学应届生求职信
2013/09/29 职场文书
员工自我鉴定范文
2013/10/06 职场文书
CAD制图设计师自荐信
2014/01/29 职场文书
体育系毕业生求职自荐信
2014/04/16 职场文书
青年志愿者活动总结
2014/04/26 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
2015年乡镇环保工作总结
2015/04/22 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP