前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python|随机函数——纸牌游戏的发牌机制

Python|随机函数——纸牌游戏的发牌机制

作者头像
算法与编程之美
发布2021-05-08 15:37:45
7130
发布2021-05-08 15:37:45
举报

问题描述

在手机日益重要的当今社会,有很多人都在使用手机上的小程序在玩着各类纸牌游戏。那么今天,我讲述的是用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 randomlist1=["红心","黑桃","方块","梅花"]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)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档