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

简介: 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次。在本次实验中,出现了很多问题,但都在一一解决。遗憾的是,我们暂时还不能实现整个牌局,这还需要下来好好的研究一下,此次就先讲述一下我们在理解发牌规则后所写出的发牌机制。

目录
相关文章
|
16天前
|
Shell Python
GitHub星标破千Star!Python游戏编程的初学者指南
Python 是一种高级程序设计语言,因其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。 目前的编程书籍大多分为两种类型。第一种,与其说是教编程的书,倒不如说是在教“游戏制作软件”,或教授使用一种呆板的语言,使得编程“简单”到不再是编程。而第二种,它们就像是教数学课一样教编程:所有的原理和概念都以小的应用程序的方式呈现给读者。
|
17天前
|
Python
【Python的魅力】:利用Pygame实现游戏坦克大战——含完整源码
【Python的魅力】:利用Pygame实现游戏坦克大战——含完整源码
|
22天前
|
算法 数据挖掘 开发者
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
|
2月前
|
数据采集 数据挖掘 关系型数据库
Python游戏篇:细节之大型游戏爆炸效果(附代码)_“python大型游戏代码”
Python游戏篇:细节之大型游戏爆炸效果(附代码)_“python大型游戏代码”
Python游戏篇:细节之大型游戏爆炸效果(附代码)_“python大型游戏代码”
|
26天前
|
算法 JavaScript 前端开发
【经典算法】LCR187:破冰游戏(约瑟夫问题,Java/C/Python3/JavaScript实现含注释说明,Easy)
【经典算法】LCR187:破冰游戏(约瑟夫问题,Java/C/Python3/JavaScript实现含注释说明,Easy)
22 1
|
18天前
|
机器学习/深度学习 传感器 人工智能
敢不敢和AI比猜拳?能赢算我输----基于手势识别的AI猜拳游戏【含python源码+PyqtUI界面+原理详解】-python手势识别 深度学习实战项目
敢不敢和AI比猜拳?能赢算我输----基于手势识别的AI猜拳游戏【含python源码+PyqtUI界面+原理详解】-python手势识别 深度学习实战项目
|
18天前
|
Shell Python
GitHub星标破千Star!Python游戏编程的初学者指南
Python 是一种高级程序设计语言,因其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。 目前的编程书籍大多分为两种类型。第一种,与其说是教编程的书,倒不如说是在教“游戏制作软件”,或教授使用一种呆板的语言,使得编程“简单”到不再是编程。而第二种,它们就像是教数学课一样教编程:所有的原理和概念都以小的应用程序的方式呈现给读者。
|
2月前
|
Python
最新用Python做一个变态版的《超级玛丽》游戏,面试必备知识点
最新用Python做一个变态版的《超级玛丽》游戏,面试必备知识点
最新用Python做一个变态版的《超级玛丽》游戏,面试必备知识点
|
22天前
|
SQL 算法 数据可视化
python 贪心算法 动态规划实现 跳跃游戏ll【力扣题45】
python 贪心算法 动态规划实现 跳跃游戏ll【力扣题45】
|
2月前
|
人工智能 数据挖掘 Python
Python游戏开发:打造你的第一个游戏
使用Python的pygame库创建打砖块游戏的教程:从安装pygame开始,逐步讲解游戏设计,包括挡板、球和砖块元素。接着展示初始化、设置常量、创建窗口和对象、主循环的代码实现。文章还提到游戏优化与扩展,如砖块消除动画、得分机制、多级布局和音效的添加,鼓励读者通过学习和实践提升游戏开发技能。