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实现的检测web服务器健康状况的小程序
Sep 17 Python
浅谈Python中的数据类型
May 05 Python
Python编程之gui程序实现简单文件浏览器代码
Dec 08 Python
python 以16进制打印输出的方法
Jul 09 Python
Ubuntu下Python2与Python3的共存问题
Oct 31 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
解决Python二维数组赋值问题
Nov 28 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
Apr 13 Python
python实现手势识别的示例(入门)
Apr 15 Python
TensorFLow 数学运算的示例代码
Apr 21 Python
python 利用jieba.analyse进行 关键词提取
Dec 17 Python
写一个Python脚本自动爬取Bilibili小视频
Apr 24 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
PHP的历史和优缺点
2006/10/09 PHP
BBS(php & mysql)完整版(六)
2006/10/09 PHP
php汉字转拼音的示例
2014/02/27 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
2014/01/23 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
详解关于Vuex的action传入多个参数的问题
2019/02/22 Javascript
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
python 正则表达式 概述及常用字符
2009/05/04 Python
Python入门篇之正则表达式
2014/10/20 Python
Python中标准模块importlib详解
2017/04/16 Python
TensorFlow利用saver保存和提取参数的实例
2018/07/26 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
Python pip 常用命令汇总
2020/10/19 Python
五种Python转义表示法
2020/11/27 Python
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
外企C语言笔试题
2013/11/10 面试题
管事部库房保管员岗位职责
2014/02/21 职场文书
工作过失检讨书
2014/02/23 职场文书
党员四风问题个人对照检查材料
2014/10/26 职场文书
家长评语怎么写
2014/12/30 职场文书
《去年的树》教学反思
2016/02/18 职场文书
导游词之云南丽江古城
2019/09/17 职场文书
小程序实现筛子抽奖
2021/05/26 Javascript
Python使用Web框架Flask开发项目
2022/06/01 Python
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android