我是靠谱客的博主 甜美钢笔,最近开发中收集的这篇文章主要介绍python之21点小游戏(简单版,不需要random函数),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

利用set集合的无序性替代random随机,只是简单的实现,可以在这个基础上升级成多人版本,Python还是刚刚学习阶段,主要参考实现就好,不要介意我的板书(代码很乱)。

#牌面列表
paimian = ['A','2','3','4','5','6','7','8','9','10','J','Q','K']
#花色列表
huase = ['♦','♣','♥','♠']
#玩家1和玩家2的空列表
play1 = list()
play2 = list()
#利用set集合的字符串无序不重复代替random
paiset = set()
#牌的顺序的空列表
pailist = list()
#初始化set集合将元素追加到list列表中
for i in range(52):
    paiset.add(str(i))
for i in paiset:
    pailist.append(i)
#先给玩家1和玩家2的列表追加两张牌
play1.append(int(pailist[0]))
play1.append(int(pailist[1]))
play2.append(int(pailist[2]))
play2.append(int(pailist[3]))
'''
printpai函数用于打印当前玩家的牌的信息
'''
def printpai(play1,play2):
    print("play1:",end="  ")
    for i in play1:
        pm = int(i % 12)
        hs = int((i+1) % 4)
        print(paimian[pm] + huase[hs],end=" ")
    print("nplay2:",end="  ")
    for i in play2:
        pm = int(i % 12)
        hs = int((i+1) % 4)
        print(paimian[pm] + huase[hs], end=" ")
'''
judge函数用于结算最终玩家的点数
'''
def judge():
    print("n______________________")
    jp1 = [0,0]
    flag1 = False
    jp2 = [0,0]
    flag2 = False
    #判断玩家1是否含有A,若含有A则有两种点数
    for i in play1:
        if i % 12 == 0:
            jp1[0]+=1
            jp1[1]+=11
            flag1 = True
        else:
            jp1[0]+=((i%12)+1)
            jp1[1]+=((i%12)+1)
    #用python的三元运算符添加是否爆点的字符串
    x1 = "(爆点)" if jp1[0]>21 else ""
    x2 = "(爆点)" if jp1[1]>21 else ""
    #如果有A则打印两个点数,若没有,打印一个
    if flag1:
        print("玩家1的点数为"+str(jp1[0])+"点"+x1+"或"+str(jp1[1])+"点"+x2)
    else:
        print("玩家1的点数为"+str(jp1[0])+"点"+x1)
    #判断玩家2是否含有A,若含有A则有两种点数
    for i in play2:
        if i % 12 == 0:
            jp2[0]+=1
            jp2[1]+=11
            flag2 = True
        else:
            jp2[0]+=((i%12)+1)
            jp2[1]+=((i%12)+1)
    #用python的三元运算符添加是否爆点的字符串
    y1 = "(爆点)" if jp2[0]>21 else ""
    y2 = "(爆点)" if jp2[1]>21 else ""
     #如果有A则打印两个点数,若没有,打印一个
    if flag2:
        print("玩家2的点数为"+str(jp2[0])+"点"+y1+"或"+str(jp2[1])+"点"+y2)
    else:
        print("玩家2的点数为"+str(jp2[0])+"点"+y1)
'''
init函数用于进行游戏的逻辑判断,是主方法
'''
def init():
    #打印规则
    print("-------游戏规则-------")
    print("---A可看做1点或11点---")
    print("--------21点---------")
    #打印当前玩家手牌信息
    printpai(play1, play2)
    #游戏进行,询问玩家是否还要添加牌
    flag1 = True
    flag2 = True
    index = 4
    print("n------------------")
    while flag1:
        iscon = input("nplay1--是否还要牌(Y or N):")
        if iscon == "Y" or iscon == "y":
            play1.append(int(pailist[index]))
            index += 1
            printpai(play1,play2)
        else:
            printpai(play1,play2)
            flag1 = False
    print("n----------------")
    while flag2:
        iscon = input("nplay2--是否还要牌(Y or N):")
        if iscon == "Y" or iscon == "y":
            play2.append(int(pailist[index]))
            index += 1
            printpai(play1,play2)
        else:
            printpai(play1,play2)
            flag2 = False
init()
#若init函数执行完毕,调用judge判断最终结果
judge()

运行结果:
在这里插入图片描述
在这里插入图片描述

最后

以上就是甜美钢笔为你收集整理的python之21点小游戏(简单版,不需要random函数)的全部内容,希望文章能够帮你解决python之21点小游戏(简单版,不需要random函数)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部