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 xlwt设置excel单元格字体及格式
Apr 18 Python
python验证码识别实例代码
Feb 03 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
May 26 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
May 28 Python
Python使用爬虫爬取静态网页图片的方法详解
Jun 05 Python
python opencv实现图像边缘检测
Apr 29 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
Nov 25 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
Feb 27 Python
PyQt5 界面显示无响应的实现
Mar 26 Python
通过代码实例解析Pytest运行流程
Aug 20 Python
python对批量WAV音频进行等长分割的方法实现
Sep 25 Python
tensorflow学习笔记之tfrecord文件的生成与读取
Mar 31 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发电子邮件
2006/10/09 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
js null,undefined,字符串小结
2010/08/21 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
JS网页在线获取鼠标坐标值的方法
2015/02/28 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
2015/03/16 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
2017/05/05 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
vue webpack重写cookie路径的方法
2019/07/10 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
python中open函数的基本用法示例
2019/09/07 Python
Python3常用内置方法代码实例
2019/11/18 Python
Pycharm导入anaconda环境的教程图解
2020/07/31 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
纯CSS3代码实现文字描边
2016/04/25 HTML / CSS
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
家长评语大全
2014/01/22 职场文书
军训 自我鉴定
2014/02/03 职场文书
自立自强的名人事例
2014/02/10 职场文书
收入证明申请书
2015/06/12 职场文书
工资证明格式模板
2015/06/12 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书