题目:
设计一个简单的四人制扑克牌游戏,能够完成以下功能:
1. 洗牌
2. 发牌
3.自定义规则,在每轮单张出牌时,判定赢家
4.自定义规则,判定最终的赢家
规则简化版:
仅能出单张牌,且出牌时,每个人出的是自己手中牌中刚好能压过上家的最小牌,最先出完的为赢家

import random
from random import choice
flower = ['\u2660','\u2663','\u2665','\u2666']
pai = ['3','4','5','6','7','8','9','10','J','Q','K','A','2']
list = []
list0 = []#储存发的牌
list1 = []
list2 = []
list3 = []
value = []
value0 = []#储存牌代表的值
value1 = []
value2 = []
value3 = []
l00 = []#储存进行升序排序后的牌
l11 = []
l22 = []
l33 = []
for i in flower:for j in pai:list.append(i+j)
for i in range(4):for j in range(13):value.append(j)
d = dict(zip(list,value))
for i in range(13):for j in range(4):if(j == 0):k = choice(list)#随机选牌for x in range(len(list)):if(k == list[x]):#和链表的牌进行匹配,删掉对应项value0.append(d[k])list.pop(x)breaklist0.append(k)if(j == 1):k = choice(list)for x in range(len(list)):if (k == list[x]):value1.append(d[k])list.pop(x)breaklist1.append(k)if (j == 2):k = choice(list)for x in range(len(list)):if (k == list[x]):value2.append(d[k])list.pop(x)breaklist2.append(k)if (j == 3):k = choice(list)for x in range(len(list)):if (k == list[x]):value3.append(d[k])list.pop(x)breaklist3.append(k)
d0 = dict(zip(list0,value0))#将每个人的牌转换为字典形式
d1 = dict(zip(list1,value1))
d2 = dict(zip(list2,value2))
d3 = dict(zip(list3,value3))
l0 = sorted(d0.values())#对牌所代表的数字进行排序
l1 = sorted(d1.values())
l2 = sorted(d2.values())
l3 = sorted(d3.values())
#对发给每个人的牌进行排序
for i in range(len(l0)):for j in list0:if(l0[i] == d0[j]):l00.append(j)break
for i in range(len(l1)):for j in list1:if(l1[i] == d1[j]):l11.append(j)break
for i in range(len(l2)):for j in list2:if(l2[i] == d2[j]):l22.append(j)break
for i in range(len(l0)):for j in list3:if(l3[i] == d3[j]):l33.append(j)break
# y = choice(['0','1','2','3'])
print("第一个人的牌:",l00)
print("第二个人的牌:",l11)
print("第三个人的牌:",l22)
print("第四个人的牌:",l33)
y = random.randint(0,3)
if (y == 0):y = y + 1n = l0[0]l0.pop(0)
elif (y == 1):y = y + 1n = l1[0]l1.pop(0)
elif (y == 2):y = y + 1n = l2[0]l2.pop(0)
elif (y == 3):y = 0n = l3[0]l3.pop(0)
for i in range(13):if(y == 0):for j in range(len(l0)):if(l0[j] > n):n = l0[j]l0.pop(j)if(len(l0) != 0 and n >= l1[len(l1)-1] and n >= l2[len(l2)-1] and n >= l3[len(l3)-1]):#判断是否当前牌中最大牌,若是,则该此人继续出牌n = l0[0]l0.pop(0)breaky = y + 1if (len(l0) == 0):print("赢家:第一个人")breakif(y == 1):for j in range(len(l1)):if(l1[j] > n):n = l1[j]l1.pop(j)if (len(l1) != 0 and n >= l0[len(l0) - 1] and n >= l2[len(l2) - 1] and n >= l3[len(l3) - 1]):n = l1[0]l1.pop(0)breaky = y + 1if (len(l1) == 0):print("赢家:第二个人")breakif(y == 2):for j in range(len(l2)):if(l2[j] > n):n = l2[j]l2.pop(j)if (len(l2) != 0 and n >= l0[len(l0) - 1] and n >= l1[len(l1) - 1] and n >= l3[len(l3) - 1]):n = l2[0]l2.pop(0)breaky = y + 1if (len(l2) == 0):print("赢家:第三个人")breakif (y == 3):for j in range(len(l3)):if (l3[j] > n):n = l3[j]l3.pop(j)if (len(l3) != 0 and n >= l0[len(l0) - 1] and n >= l1[len(l1) - 1] and n >= l2[len(l2) - 1]):n = l3[0]l3.pop(0)breaky = 0if (len(l3) == 0):print("赢家:第四个人")break
#将剩余牌从键值转化成牌
if(len(l0) != 0):for i in range(len(l0)):for j in list0:if(l0[i] == d0[j]):l0[i] = jbreak
if(len(l1) != 0):for i in range(len(l1)):for j in list1:if(l1[i] == d1[j]):l1[i] = jbreak
if(len(l2) != 0):for i in range(len(l2)):for j in list2:if(l2[i] == d2[j]):l2[i] = jbreak
if(len(l3) != 0):for i in range(len(l3)):for j in list3:if(l3[i] == d3[j]):l3[i] = jbreak
print("第一个人的牌:",l0)
print("第二个人的牌:",l1)
print("第三个人的牌:",l2)
print("第四个人的牌:",l3)

简单版四人扑克牌(python)相关推荐

  1. python编程 上册第4版_人美版四年级上册美术第4课在快乐的节日里

    教材 教案 教学目标: 1.通过观察.回忆.交流等方式了解传统节日中人们的服装.活动和环境特点,构思并表现自己印象最深刻的场景. 2.通过欣赏作品.教师演示.探究尝试.研究讨论等形式,研究刮画纸的创作 ...

  2. 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第四章 使用SCAPY掌控网络(2)Scapy实现ARP缓存投毒

    黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第四章 使用SCAPY掌控网络(2)Scapy实现ARP缓存投毒 文章目录 黑帽python第二版(Bl ...

  3. 四年级计算机走进传统节日教案,小学信息技术黔科版四年级上册第一单元 中国传统节日——制作简单电子作品活动3 使用资料制作作品教案...

    这是一份小学信息技术黔科版四年级上册第一单元 中国传统节日--制作简单电子作品活动3 使用资料制作作品教案,共3页. 活动3 使用资料制作作品 教学目标: 1.学会使用简单的快捷方式 2.学会编辑文档 ...

  4. python爬取顶点小说简单版

    python爬取顶点小说简单版 爬取网络资源首先要下载requests库 因为这里面也有数据提取和分析所以也要有etree库,re库 下载库的代码是:pip install 库名 如:pip inst ...

  5. 四人麻将 java版下载_四人麻将下载-四人打麻将免费版手机最新下载

    四人麻將創新結合國標麻將和四川省血液之戰多種玩法,花式魔幻的國家標准番型和胡牌,連胡不斷的血流成河,一站到底的血流成河,讓你high爆整場爽翻天.點卷送不斷,開展活動更有手機話費.手機等豐富獎賞! 四 ...

  6. 笨办法学Python(第四版)最新版+Python爬虫开发与项目实战+Python网络数据采集+精通Scrapy网络爬虫

    笨办法学Python(第四版)最新版+Python爬虫开发与项目实战+Python网络数据采集+精通Scrapy网络爬虫 本资料为最新整理高清带目录pdf,百度网盘下载~~~ 本资料为最新整理高清带目 ...

  7. 用python实现简单的火柴人游戏

    用python实现简单的火柴人游戏 1.最终效果 2.准备工作 先画出游戏中各个部分的图像素材,其中包括背景,移动的火柴人,门,楼梯. 背景:500/500像素 火柴人:27/30像素 门:27/30 ...

  8. 小学美术计算机教案,人美版四年级下册美术18、电脑美术——你追我赶教案

    人美版四年级下册美术18.电脑美术--你追我赶教案 发布时间:2018-01-19 课题 18.电脑美术--你追我赶 学情 分析让学生理解如何更合理地运用电脑图像变化的功能对自己已有的创作进行完善.创 ...

  9. 【Python】网络编程--解决粘包问题--简单版:

    网络编程–解决粘包问题–简单版: 客户端: import struct import socketphone=socket.socket(socket.AF_INET,socket.SOCK_STRE ...

最新文章

  1. Service Intent must be explicit
  2. linux怎么添加工作组,linux 用户与工作组
  3. 进入一个目录需要那些权限
  4. 张朝阳:社交是互联网的中原 做「狐友」是要逐鹿中原
  5. python递归函数对照表_python-访问递归函数中附加到列表的值
  6. linux安装 tomcat 6 笔记
  7. 计算机组成原理—存储系统大纲
  8. php soap 超时,PHP SoapClient超时错误处理程序
  9. 【在线仿真】Arduino WS2812b环形24颗霓虹灯动态效果显示
  10. python研究背景与意义_课题研究的背景和意义
  11. 老司机教你下载tumblr上视频和图片的正确姿势
  12. python和c 情侣网名_超可爱超有趣的情侣ID
  13. SLAM基础——李群李代数
  14. 数据挖掘——认识数据
  15. Nginx防止大流量攻击,限制流量访问(limit_req_zone模块)以及进行网站压力测试
  16. 学习-Java继承和多态之子类继承性
  17. 讲座有感——科技论文写作要素
  18. 用计算机绘制火灾逃生路线图,绘制火灾逃生路线图,逃生疏散计划,演练活动记录..._消防考试_帮考网...
  19. 【马士兵】Python基础--01
  20. 基于小梅哥AC620开发板的NIOS II LWIP百兆以太网例程移植到自己做的板子上

热门文章

  1. 10.8 UiPath 数据筛选Filter Data Table的介绍和使用(Excel数据写入另一个Excel中)
  2. 5)bootstrcp和ajax技术的使用和介绍
  3. 《蜘蛛侠:平行宇宙》的视觉解析与滤镜实现
  4. 字节跳动薪资_字节跳动入局社区团购,以高出市场两倍薪资挖人
  5. JQuery中closet、toggleClass、removeClass、addClass理解
  6. .net 发送电邮_关于如何使用.NET发送电子邮件的快速参考
  7. 用自卑感塑造更好地自己
  8. python远程连接mysql数据库_python远程连接MySQL数据库
  9. ESP8266-01s——无线模块使用
  10. Oracle 中启动 Scott 用户 的方法