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之集合的关系
Sep 24 Python
Python 字典dict使用介绍
Nov 30 Python
使用Python脚本对Linux服务器进行监控的教程
Apr 02 Python
对python 判断数字是否小于0的方法详解
Jan 26 Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 Python
python程序 创建多线程过程详解
Sep 23 Python
Python基本类型的连接组合和互相转换方式(13种)
Dec 16 Python
python飞机大战pygame碰撞检测实现方法分析
Dec 17 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
Feb 13 Python
使用Keras预训练好的模型进行目标类别预测详解
Jun 27 Python
Python使用openpyxl批量处理数据
Jun 23 Python
关于的python五子棋的算法
May 02 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
文件上传的实现
2006/10/09 PHP
PHP mkdir()定义和用法
2009/01/14 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
PHP变量赋值、代入给JavaScript中的变量
2015/06/29 PHP
在WordPress中使用wp-cron插件来设置定时任务
2015/12/10 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
基于jQuery实现弹幕APP
2017/02/10 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
修改node.js默认的npm安装目录实例
2018/05/15 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
Python实现的批量下载RFC文档
2015/03/10 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
python顺序执行多个py文件的方法
2019/06/29 Python
通过实例了解python property属性
2019/11/01 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
浅谈python 中的 type(), dtype(), astype()的区别
2020/04/09 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
HTMl5的存储方式sessionStorage和localStorage详解
2014/03/18 HTML / CSS
《散步》教学反思
2014/03/02 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
研究生导师评语
2014/12/31 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
MyBatis在注解上使用动态SQL方式(@select使用if)
2022/07/07 Java/Android
MySQL新手入门进阶语句汇总
2022/09/23 MySQL