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生成pdf文件的方法
Aug 04 Python
python3中bytes和string之间的互相转换
Feb 09 Python
Python对列表中的各项进行关联详解
Aug 15 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
Feb 07 Python
Flask实现图片的上传、下载及展示示例代码
Aug 03 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
windows下 兼容Python2和Python3的解决方法
Dec 05 Python
Python列表list操作相关知识小结
Jan 29 Python
python 使用openpyxl读取excel数据
Feb 18 Python
Python实现拼音转换
Jun 07 Python
Python测试框架pytest高阶用法全面详解
Jun 01 Python
Python可视化神器pyecharts绘制地理图表
Jul 07 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 max_execution_time执行时间问题
2011/07/17 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
js 时间函数应用加、减、比较、格式转换的示例代码
2013/08/23 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
基于jQuery实现Accordion手风琴自定义插件
2020/10/13 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
Node.js数据库操作之连接MySQL数据库(一)
2017/03/04 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
基于python实现地址和经纬度转换
2020/05/19 Python
Python实现删除某列中含有空值的行的示例代码
2020/07/20 Python
Python中猜拳游戏与猜筛子游戏的实现方法
2020/09/04 Python
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
参观监狱心得体会
2014/01/02 职场文书
营销总经理岗位职责
2014/02/02 职场文书
幼儿园教师演讲稿
2014/05/06 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL