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通过ftplib登录到ftp服务器的方法
May 08 Python
Python插件virtualenv搭建虚拟环境
Nov 20 Python
python统计字母、空格、数字等字符个数的实例
Jun 29 Python
解决python给列表里添加字典时被最后一个覆盖的问题
Jan 21 Python
Python3中的bytes和str类型详解
May 02 Python
Puppeteer使用示例详解
Jun 20 Python
python可视化实现KNN算法
Oct 16 Python
python实现猜拳游戏
Mar 04 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
Mar 12 Python
Django 实现图片上传和下载功能
Dec 31 Python
Python列表元素删除和remove()方法详解
Jan 04 Python
Python实现随机生成迷宫并自动寻路
Jun 13 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
PHP实现的购物车类实例
2015/06/17 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
php查询操作实现投票功能
2016/05/09 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
2013/12/02 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
Javascript调试之console对象——你不知道的一些小技巧
2017/07/10 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
Vue页面刷新记住页面状态的实现
2019/12/27 Javascript
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
python列表的常用操作方法小结
2016/05/21 Python
利用python批量修改word文件名的方法示例
2017/10/17 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
css3实现书本翻页效果的示例代码
2021/03/08 HTML / CSS
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
50道外企软件测试面试题
2014/08/18 面试题
文案策划求职信
2014/03/18 职场文书
白酒营销策划方案
2014/08/17 职场文书
放飞理想主题班会
2015/08/14 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
心理健康教育培训研修感言
2015/11/18 职场文书
mysql中between的边界,范围说明
2021/06/08 MySQL