python实现斗地主分牌洗牌


Posted in Python onJune 22, 2020

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

1、建立一个序列,共54个元素,表示一副扑克牌,初始化时是有顺序的。
2、编写一段代码完成洗牌功能,即将刚才的序列从有序的排列变成随机的无序排列。
3、编写一段代码完成切牌功能,即找到一个1-54的随机数,将刚才洗牌后的序列从这个随机数开始。
4、编写一段代码完成发牌功能,将刚才这个切牌后的无序序列,按顺序分发到三个序列中去,并剩余三张底牌(也是一个序列)。
5、编写一段代码完成理牌功能,首先将分牌后的每个序列排序(有自带的函数),然后按照从大到小的顺序按牌型的方式显示出来。
6、完成随机叫地主功能,随机出现一个地主,将三张底牌分给这个地主,形成新的序列并且降序排列。
7、要显示出牌的名称,如:Spade2(黑桃2)、Heart2(红桃2)、Club2(梅花2)、Diamond2(方片2)等,也可以用缩写:S2、H2、C2、D2等。可以使用映射(即字典),也可以自行编写显示程序。

代码如下

poker=[]   #产生一副牌
pokers=[]
num=101    #用101代指黑桃1,102代指红桃1,201代指黑桃2
for length in range(0,52):
 poker.append(num)
 num+=1
 if (length+1)%4==0:
 num-=4
 num+=10
poker.extend([230,240])
print(poker)

import random    #洗牌 奇数为一组 偶数为一组
for leng in range(0,8): 
 poker1=[]
 poker2=[]
 for length in range(0,54):
 if length%2==0:
  poker1.append(poker[length])
 else:
  poker2.append(poker[length])
 temp=random.randrange(0,2) #为1时 偶奇相加 ,为2时奇偶相加,共2**8种结果
 if temp%2==0:
 poker=poker1+poker2
 else:
 poker=poker2+poker1
print(poker)

number=int(input("请输入切牌的位置;")) #切牌
poker1=poker[0:number]
poker2=poker[number:54]
poker=poker2+poker1
print(poker)

player1=[]    #分牌
player2=[]
player3=[]
for length in range(0,51):
 if length%3==0:
 player1.append(poker[length])
 if length%3==1:
 player2.append(poker[length])
 if length%3==2:
 player3.append(poker[length])

for length in range(51,54):  #剩下的三张牌 (地主的牌)
 num=(poker[length]-90)//10
 temp=num
 if num==11:
 temp='J'
 if num==12:
 temp='Q'
 if num==13:
 temp='K'
 
 if poker[length]%10==1:
 name=str(temp)+'S'
 pokers.append(name)
 elif poker[length]%10==2:
 name=str(temp)+'H'
 pokers.append(name)
 elif poker[length]%10==3:
 name=str(temp)+'C'
 pokers.append(name)
 elif poker[length]%10==4:
 name=str(temp)+'D'
 pokers.append(name)
 elif poker[length]==230:
 name='小王'
 pokers.append(name)
 elif poker[length]==240:
 name='大王'
 pokers.append(name)
print(pokers)

power=random.randrange(1,4)
if power==1:
 player1.extend(poker[51:54])
if power==2:
 player2.extend(poker[51:54])
if power==3:
 player3.extend(poker[51:54])
player1.sort()    #降序
player2.sort()  
player3.sort()
player1=player1[::-1]
player2=player2[::-1]
player3=player3[::-1]


player1s=[]    #显示
player2s=[]
player3s=[]
for length in range(0,len(player1)):  #显示 player1
 num=(player1[length]-90)//10
 temp=num
 if num==11:
 temp='J'
 if num==12:
 temp='Q'
 if num==13:
 temp='K'
 
 if player1[length]%10==1:
 name=str(temp)+'S'
 player1s.append(name)
 elif player1[length]%10==2:
 name=str(temp)+'H'
 player1s.append(name)
 elif player1[length]%10==3:
 name=str(temp)+'C'
 player1s.append(name)
 elif player1[length]%10==4:
 name=str(temp)+'D'
 player1s.append(name)
 elif player1[length]==230:
 name='小王'
 player1s.append(name)
 elif player1[length]==240:
 name='大王'
 player1s.append(name)

for length in range(0,len(player2)):  #显示 player2
 num=(player2[length]-90)//10
 temp=num
 if num==11:
 temp='J'
 if num==12:
 temp='Q'
 if num==13:
 temp='K'
 
 if player2[length]%10==1:
 name=str(temp)+'S'
 player2s.append(name)
 elif player2[length]%10==2:
 name=str(temp)+'H'
 player2s.append(name)
 elif player2[length]%10==3:
 name=str(temp)+'C'
 player2s.append(name)
 elif player2[length]%10==4:
 name=str(temp)+'D'
 player2s.append(name)
 elif player2[length]==230:
 name='小王'
 player2s.append(name)
 elif player2[length]==240:
 name='大王'
 player2s.append(name)
for length in range(0,len(player3)):  #显示 player3
 num=(player3[length]-90)//10
 temp=num
 if num==11:
 temp='J'
 if num==12:
 temp='Q'
 if num==13:
 temp='K'
 
 if player3[length]%10==1:
 name=str(temp)+'S'
 player3s.append(name)
 elif player3[length]%10==2:
 name=str(temp)+'H'
 player3s.append(name)
 elif player3[length]%10==3:
 name=str(temp)+'C'
 player3s.append(name)
 elif player3[length]%10==4:
 name=str(temp)+'D'
 player3s.append(name)
 elif player3[length]==230:
 name='小王'
 player3s.append(name)
 elif player3[length]==240:
 name='大王'
 player3s.append(name)
if len(player1s)==17:
 print('农民:',player1s)
else:
 print('地主:',player1s)
if len(player2s)==17:
 print('农民:',player2s)
else:
 print('地主:',player2s)
if len(player3s)==17:
 print('农民:',player3s)
else:
 print('地主:',player3s)

(显示可先编为函数,使用时引用,可减少代码行数)
(此方法未用python内置函数,如果你嫌麻烦可在此基础上再次优化)

更多有趣的经典小游戏实现专题,分享给大家:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python遍历目录的4种方法实例介绍
Apr 13 Python
python中argparse模块用法实例详解
Jun 03 Python
详解Django通用视图中的函数包装
Jul 21 Python
浅谈Django自定义模板标签template_tags的用处
Dec 20 Python
python3 打开外部程序及关闭的示例
Nov 06 Python
详解Django-restframework 之频率源码分析
Feb 27 Python
Pandas中resample方法详解
Jul 02 Python
33个Python爬虫项目实战(推荐)
Jul 08 Python
python代码中怎么换行
Jun 17 Python
python如何绘制疫情图
Sep 16 Python
python 带时区的日期格式化操作
Oct 23 Python
python blinker 信号库
May 04 Python
解决Keras使用GPU资源耗尽的问题
Jun 22 #Python
Keras - GPU ID 和显存占用设定步骤
Jun 22 #Python
Python 基于jwt实现认证机制流程解析
Jun 22 #Python
python中format函数如何使用
Jun 22 #Python
Tensorflow与Keras自适应使用显存方式
Jun 22 #Python
python数据类型强制转换实例详解
Jun 22 #Python
keras 指定程序在某块卡上训练实例
Jun 22 #Python
You might like
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
实例讲解PHP表单处理
2019/02/15 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
2018/01/18 Javascript
浅谈React组件之性能优化
2018/03/02 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
小结Python的反射机制
2020/09/28 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
HTML5 Canvas draw方法制作动画效果示例
2013/07/11 HTML / CSS
工作的心得体会
2013/12/31 职场文书
厨房管理计划书
2014/04/27 职场文书
2014年师德承诺书
2014/05/23 职场文书
单位在职证明书
2014/09/11 职场文书