本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

问题描述

在手机日益重要的当今社会,有很多人都在使用手机上的小程序在玩着各类纸牌游戏。那么今天,我讲述的是用python实现纸牌游戏中的一种——“七王五二三”的发牌。

示例:运用random函数,将每一个人的牌进行随机抽取,抽出的牌不重复,最开始每人发五张。

输入:请输入参与人数(请不要多于5人):6

人数超限,请重新输入:4

输出:黑桃6,红心K,黑桃2,梅花4,梅花4,梅花6,红心5,红心9,黑桃J,方块K,红心10,方块9,方块9,红心3,梅花9,黑桃5,红心10,梅花4,方块7,红心6,(在此,默认每五张牌为一人的牌)

解决方案

用文字描述解题思路,可配合一些图形进行描述以便更好的阐述。

准备阶段:

我们要对数据进行一个存储,在这里,我们用的是列表来存储这些数据。将牌的花色存储在第一个list1列表里,牌的数字存储在第二个list2列表里,用一个空的str1来存放后面所输出的牌号。然后用int及input函数来让玩家输入参与人数。

判断阶段:

①判断输入的玩家数是否超过或少于规定人数

②若在正常范围内,则执行else以下的操作;若超过了规定人数,则重新输入,再次执行;若少于规定人数,也是重新输入,再次执行。

输出阶段:

先是输出一个能输入数字的字符串,再根据输入的数进行判断过后,输出一个按list1[]+list2[]+“,”形式排列的几个牌号。如本文示例的输出所示。

代码清单 随机函数——纸牌游戏的发牌代码

import random

list1=["红心","黑桃","方块","梅花"]

list2=["A","1","2","3","4","5","6","7","8","9","10","J","Q","K","KING","QUEEN"]

str1 =""        #存放牌组的空字符串

s=int(input("请输入参与人数(请不要多于5人):"))

if (s>5):        #判断人数是否超限

k=int(input("人数超限,请重新输入:"))

for j in  range(k):

for i  in range(5):

a  = random.randrange(1, 54)

print(a)

if  (a <= 13):

print(list1[0] + list2[a])

str1 += list1[0] + list2[a] + ","  # "+"把list1和list2的字符串相连接,str1=str1+,存下每一次抽牌的牌号

elif (a <= 26):

print(list1[1] + list2[a - 13])

str1 += list1[1] + list2[a - 13] + ","

elif (a <= 39):

print(list1[2] + list2[a - 26])

str1 += list1[2] + list2[a - 26] + ","

elif (a <= 52):

print(list1[3] + list2[a - 39])

str1 += list1[3] + list2[a - 39] + ","

elif (a == 53):

print(list2[14])

str1 += list2[14] + ","

else:

print(list2[15])

str1 += list2[15] + ","

print(str1)

elif (s<2):

h =  int(input("人数过少,请重新输入:"))

for j in  range(h):

for i  in range(5):

a  = random.randrange(1, 54)

print(a)

if  (a <= 13):

print(list1[0] + list2[a])

str1 += list1[0] + list2[a] + ","  # "+"把list1和list2的字符串相连接,str1=str1+,存下每一次抽牌的牌号

elif (a <= 26):

print(list1[1] + list2[a - 13])

str1 += list1[1] + list2[a - 13] + ","

elif (a <= 39):

print(list1[2] + list2[a - 26])

str1 += list1[2] + list2[a - 26] + ","

elif (a <= 52):

print(list1[3] + list2[a - 39])

str1 += list1[3] + list2[a - 39] + ","

elif (a == 53):

print(list2[14])

str1 += list2[14] +  ","

else:

print(list2[15])

str1 += list2[15] + ","

print(str1)

else:

for j in  range(s):

for i  in range(5):

a  = random.randrange(1, 54)

print(a)

if  (a<=13):

print(list1[0]+list2[a])

str1+=list1[0]+list2[a]+","#"+"把list1和list2的字符串相连接,str1=str1+,存下每一次抽牌的牌号

elif (a<=26):

print(list1[1]+list2[a-13])

str1 += list1[1] + list2[a-13] + ","

elif (a<=39):

print(list1[2]+list2[a-26])

str1 += list1[2] + list2[a-26] + ","

elif (a<=52):

print(list1[3]+list2[a-39])

str1 += list1[3] + list2[a-39] + ","

elif (a==53):

print(list2[14])

str1 += list2[14] + ","

else:

print(list2[15])

str1 += list2[15] + ","

print(str1)

结语

我们在本文中讲述了在纸牌游戏中的发牌机制,由于我是按照“七王五二三”这个纸牌游戏的原型来做的,所以本次纸牌游戏每个人只循环5次。在本次实验中,出现了很多问题,但都在一一解决。遗憾的是,我们暂时还不能实现整个牌局,这还需要下来好好的研究一下,此次就先讲述一下我们在理解发牌规则后所写出的发牌机制。

实习编辑:衡辉

作者:陈文杰、邓斯丹、李俭

稿件来源:深度学习与文旅应用实验室(DLETA)

Python|随机函数——纸牌游戏的发牌机制相关推荐

  1. 用python实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例)

    1.namedtuple:命名元组,可以创建一个没有方法只有属性的类 from collections import namedtuple card = namedtuple('card',['ran ...

  2. python十点半纸牌游戏教程

    作品:十点半 / TenPointHalf(?) 前言:这是我的python编程作业,一个python写的纸牌游戏. 本文适合python入门新手,都是python基础知识 文章底部会贴出完整代码,如 ...

  3. 纸牌游戏洗牌发牌排序算法设计

    纸牌游戏洗牌发牌排序算法设计 本文提供纸牌游戏设计制作的基础部分,即洗牌,发牌,牌张排序排列显示的算法. 以及游戏开始时间使用时间的显示.我是用简单的C语言编译器MySpringC在安卓手机上编写的. ...

  4. 开火车的纸牌游戏-python版本

    小Byte和小Dance玩一种叫"开火车的"纸牌游戏,游戏规则如下: 1.初始给两人随机平分52张扑克牌,每个人26张; 2.小Byte先开始,将第一张牌放下; 3.随后两人轮流按 ...

  5. python创建游戏代码_用Python类创建纸牌游戏

    我试图通过创建一个纸牌游戏来练习Python中的编程类.现在我要做的是让玩家从牌堆中抽一张牌.我有如下代码: class Deck(): def __init__(self): #create the ...

  6. phaser.min.js_如何使用Phaser 3,Express和Socket.IO构建多人纸牌游戏

    phaser.min.js I'm a tabletop game developer, and am continually looking for ways to digitize game ex ...

  7. python能做游戏吗-python能开发游戏吗

    python可以写游戏,但不适合.下面我们来分析一下具体原因. 用锤子能造汽车吗? 谁也没法说不能吧?历史上也确实曾经有些汽车,是用锤子造出来的.但一般来说,还是用工业机器人更合适对吗? 比较大型的, ...

  8. 用计算机玩纸牌,《玩“纸牌”游戏》教学设计

    [教学目标] 知识目标:1.进一步认识窗口.对话框和菜单命令. 2.让学生掌握纸牌游戏的玩法,使学生从玩中学计算机知识. 3.使学生熟练掌握鼠标器的操作方法. 4.初步使用"帮助" ...

  9. 一分钟教你学会python_十分钟教你学会python编写小游戏

    原标题:十分钟教你学会python编写小游戏 看过,估计大家都已经精通了吧,好的,话不多说,今天就活学活用,用python来编写纸牌游戏21点,江湖人称黑杰克,BLACK JACK-(注意法式卷舌). ...

最新文章

  1. 进程线程002 等待链表 调度链表
  2. Typescript04---模块、命名空间
  3. 一对多,多对一,多对多的关系
  4. Codeforces Round #470 (rated, Div. 2, based on VK Cup 2018 Round 1)B. Primal Sport
  5. MongoDB 计划从“Data Sprawl”中逃脱
  6. Arcgis Engine矢量裁剪栅格,调用Mask工具相关代码
  7. 【正则表达式】sql语句去掉注释代码
  8. AtCoder Regular Contest 082 (ARC082) E - ConvexScore 计算几何 计数
  9. AGC 26 F Manju Game
  10. CentOS安装l2tpd
  11. 联通积分兑换的Q币怎么兑换到QQ上
  12. android 串口调试助手源码,android 串口调试工具源码
  13. 最新聚合支付系统+农信易扫/飞行模式+附APP
  14. 英雄无敌6服务器在哪个文件夹,魔法门英雄无敌6:生物-墓园资料
  15. Java中get和set的作用、用法
  16. 【黑帽SEO案例分析】10天爱站从0到6
  17. 不同证券的资产收益率统计(2012-2020年)
  18. 装配图中齿轮的画法_机械制图之装配图
  19. 微信支付以及接入SDK支付
  20. 做微商如何快速建立信任?

热门文章

  1. 倒计时动画 html,HTML+CSS动画实现倒计时
  2. shell运行java去哪加载jar包_shell脚本启动jar包-jar文件怎么打开
  3. 黑客之道-解码Facebook的DevOps之路
  4. HFSS:Com Engine non-responsive
  5. python练习:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
  6. 最终幻想15显示服务器,最终幻想15无法连接到更新服务器啊 | 手游网游页游攻略大全...
  7. Dell戴尔笔记本电脑XPS 13 9305原装出厂系统恢复原厂系统11
  8. 凭你不知道的这些功能,华为p10就能称为有史以来最棒的国产机
  9. MySQL 索引的创建、删除
  10. VMware Workstation 开启虚拟机后蓝屏