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中操作日期和时间之gmtime()方法的使用
May 22 Python
在Python的Django框架中为代码添加注释的方法
Jul 16 Python
Python实现最大子序和的方法示例
Jul 05 Python
Django 创建后台,配置sqlite3教程
Nov 18 Python
sklearn+python:线性回归案例
Feb 24 Python
Python实现检测文件的MD5值来查找重复文件案例
Mar 12 Python
Python利用for循环打印星号三角形的案例
Apr 12 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
Jul 14 Python
如何真正的了解python装饰器
Aug 14 Python
python如何获得list或numpy数组中最大元素对应的索引
Nov 16 Python
Python Django获取URL中的数据详解
Nov 01 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 XMLWriter类的简单示例代码(RSS输出)
2011/09/30 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
将查询条件的input、select清空
2014/01/14 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
原生js实现模拟滚动条
2015/06/15 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
2016/09/02 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
python使用any判断一个对象是否为空的方法
2014/11/19 Python
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
Python抓取电影天堂电影信息的代码
2016/04/07 Python
关于Python面向对象编程的知识点总结
2017/02/14 Python
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
Python算法中的时间复杂度问题
2019/11/19 Python
python中查看.db文件中表格的名字及表格中的字段操作
2020/07/07 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
美体小铺加拿大官方网站:The Body Shop加拿大
2016/10/30 全球购物
《手指教学》反思
2014/02/14 职场文书
我的求职择业计划书
2014/04/04 职场文书
《有趣的发现》教学反思
2014/04/15 职场文书
大学竞选班长演讲稿
2014/04/24 职场文书
行政求职信
2014/07/04 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
村主任“四风”问题个人整改措施
2014/10/04 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
雾霾停课通知
2015/04/24 职场文书
详解nginx进程锁的实现
2021/06/14 Servers