打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python|随机函数——纸牌游戏的发牌机制
问题描述
在手机日益重要的当今社会,有很多人都在使用手机上的小程序在玩着各类纸牌游戏。那么今天,我讲述的是用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次。在本次实验中,出现了很多问题,但都在一一解决。遗憾的是,我们暂时还不能实现整个牌局,这还需要下来好好的研究一下,此次就先讲述一下我们在理解发牌规则后所写出的发牌机制。
实习编辑:衡辉
作者:陈文杰、邓斯丹、李俭
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何制作二维码,基础语法300行代码学习!!
入门python,看完这个300行代码的例子,你们会喜欢的~
山脚问题集锦
python3.5|小白入门使用频率较高及较实用基础语法与简单实例
【Python基础语法】参考 卡西
一些最常用的Python脚本!我全用过!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服