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字符串转换成浮点数函数分享
Jul 24 Python
python3使用pyqt5制作一个超简单浏览器的实例
Oct 19 Python
python3 发送任意文件邮件的实例
Jan 23 Python
Django学习教程之静态文件的调用详解
May 08 Python
对Python多线程读写文件加锁的实例详解
Jan 14 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
Mar 18 Python
利用pyinstaller打包exe文件的基本教程
May 02 Python
在Python中通过threshold创建mask方式
Feb 19 Python
Django认证系统user对象实现过程解析
Mar 02 Python
Pycharm同步远程服务器调试的方法步骤
Nov 04 Python
Python 生成短8位唯一id实战教程
Jan 13 Python
python之PySide2安装使用及QT Designer UI设计案例教程
Jul 26 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
初识ThinkPHP控制器
2016/04/07 PHP
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
AngularJS快速入门
2015/04/02 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
使用node.js实现微信小程序实时聊天功能
2018/08/13 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
jquery实现拖拽添加元素功能
2020/12/01 jQuery
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
python中from module import * 的一个坑
2014/07/20 Python
Python实现抓取网页并且解析的实例
2014/09/20 Python
python操作excel的方法
2018/08/16 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
浅谈python 中类属性共享的问题
2019/07/02 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
Python日志处理模块logging用法解析
2020/05/19 Python
python3让print输出不换行的方法
2020/08/24 Python
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
如何掌握自荐信格式呢
2013/11/19 职场文书
六十大寿答谢词
2014/01/12 职场文书
运动会邀请函范文
2014/02/06 职场文书
全国优秀辅导员事迹材料
2014/05/14 职场文书
2014小学语文教师个人工作总结
2014/12/03 职场文书
2015年教学副校长工作总结
2015/07/22 职场文书
公司周年庆典致辞
2015/07/30 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
python中redis包操作数据库的教程
2022/04/19 Python
Golang ort 中的sortInts 方法
2022/04/24 Golang