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网络编程学习笔记(10):webpy框架
Jun 09 Python
python开发之基于thread线程搜索本地文件的方法
Nov 11 Python
Python中操作符重载用法分析
Apr 29 Python
Python创建对称矩阵的方法示例【基于numpy模块】
Oct 12 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
python中正则表达式的使用方法
Feb 25 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
新年快乐! python实现绚烂的烟花绽放效果
Jan 30 Python
django 取消csrf限制的实例
Mar 13 Python
使用Python爬取弹出窗口信息的实例
Mar 14 Python
Python动态强类型解释型语言原理解析
Mar 25 Python
Python尝试实现蒙特卡罗模拟期权定价
Apr 21 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与javascript对多项选择的处理
2006/10/09 PHP
PHP与javascript的两种交互方式
2006/10/09 PHP
PHP 单引号与双引号的区别
2009/11/24 PHP
学习使用curl采集curl使用方法
2012/01/11 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
java、javascript实现附件下载示例
2014/08/14 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
python解析json实例方法
2013/11/19 Python
在Django的URLconf中使用命名组的方法
2015/07/18 Python
Python利用ansible分发处理任务
2015/08/04 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
python取余运算符知识点详解
2019/06/27 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
Python流程控制 if else实现解析
2019/09/02 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
Django在Model保存前记录日志实例
2020/05/14 Python
python之语音识别speech模块
2020/09/09 Python
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
成人大专生实习期的自我评价
2013/10/02 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
运动会演讲稿100字
2014/08/25 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
pandas中对文本类型数据的处理小结
2021/11/01 Python