python实现四人制扑克牌游戏


Posted in Python onApril 22, 2020

本文实例为大家分享了python实现四人制扑克牌游戏的具体代码,供大家参考,具体内容如下

题目:

设计一个简单的四人制扑克牌游戏,能够完成以下功能:

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)
          break
      list0.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)
          break
      list1.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)
          break
      list2.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)
          break
      list3.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 + 1
  n = l0[0]
  l0.pop(0)
elif (y == 1):
  y = y + 1
  n = l1[0]
  l1.pop(0)
elif (y == 2):
  y = y + 1
  n = l2[0]
  l2.pop(0)
elif (y == 3):
  y = 0
  n = 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)
        break
    y = y + 1
  if (len(l0) == 0):
    print("赢家:第一个人")
    break
  if(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)
        break
    y = y + 1
  if (len(l1) == 0):
    print("赢家:第二个人")
    break
  if(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)
        break
    y = y + 1
  if (len(l2) == 0):
    print("赢家:第三个人")
    break
  if (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)
        break
    y = 0
  if (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] = j
        break
if(len(l1) != 0):
  for i in range(len(l1)):
    for j in list1:
      if(l1[i] == d1[j]):
        l1[i] = j
        break
if(len(l2) != 0):
  for i in range(len(l2)):
    for j in list2:
      if(l2[i] == d2[j]):
        l2[i] = j
        break
if(len(l3) != 0):
  for i in range(len(l3)):
    for j in list3:
      if(l3[i] == d3[j]):
        l3[i] = j
        break
print("第一个人的牌:",l0)
print("第二个人的牌:",l1)
print("第三个人的牌:",l2)
print("第四个人的牌:",l3)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现dict版图遍历示例
Feb 19 Python
Python中的Matplotlib模块入门教程
Apr 15 Python
Python实现基于权重的随机数2种方法
Apr 28 Python
python中 chr unichr ord函数的实例详解
Aug 06 Python
python微信跳一跳系列之棋子定位颜色识别
Feb 26 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
Apr 15 Python
Python编写带选项的命令行程序方法
Aug 13 Python
Jupyter加载文件的实现方法
Apr 14 Python
如何写python的配置文件
Jun 07 Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 Python
Django数据统计功能count()的使用
Nov 30 Python
Python爬虫基础之初次使用scrapy爬虫实例
Jun 26 Python
如何在django中实现分页功能
Apr 22 #Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
Apr 22 #Python
python实现扑克牌交互式界面发牌程序
Apr 22 #Python
文件上传服务器-jupyter 中python解压及压缩方式
Apr 22 #Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
Apr 22 #Python
Jupyter 无法下载文件夹如何实现曲线救国
Apr 22 #Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
Apr 22 #Python
You might like
PHP中的cookie
2006/11/26 PHP
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
PHP开发框架kohana3 自定义路由设置示例
2014/07/14 PHP
php实现mysql事务处理的方法
2014/12/25 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
jquery之Document元素选择器篇
2008/08/14 Javascript
学习ExtJS Column布局
2009/10/08 Javascript
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
jquery操作ID带有变量的节点实例
2016/12/07 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
JS前后端实现身份证号验证代码解析
2020/07/23 Javascript
vue 中使用print.js导出pdf操作
2020/11/13 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
Python爬取读者并制作成PDF
2015/03/10 Python
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
python实现的DES加密算法和3DES加密算法实例
2015/06/03 Python
Python实现针对中文排序的方法
2017/05/09 Python
Python实现带下标索引的遍历操作示例
2019/05/30 Python
材料成型专业个人求职信范文
2013/09/25 职场文书
会计个人实习计划书
2014/08/15 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
情人节活动总结范文
2015/02/05 职场文书
对外汉语教师推荐信
2015/03/27 职场文书
2015年教师教学工作总结
2015/04/28 职场文书
高中语文教学反思范文
2016/02/16 职场文书
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python