Python 猜牌游戏及帮助实现

Python 猜牌游戏及帮助实现,python,python-3.x,Python,Python 3.x,我是Python新手,最初的几十个小时我都在学习在线课程、家庭作业项目,当然还有一些文档阅读 我几乎完成了我的一门课程。我的最后一个项目是创建简单的纸牌游戏,我已经完成了(代码如下)。我想简单地解释一下我的游戏是关于什么的。这是一款简单的“赌博”猜牌游戏,玩家数量不确定。玩家只需猜测下一张牌是比上一张牌低还是高,然后根据自己的判断赢还是输来下注 就我测试而言,我的代码是有效的(我发现了一个到目前为止我无法解决的bug——当所有玩家在一轮中失败时,他们并没有像应该的那样被踢出游戏) 无论如何,我的

我是Python新手,最初的几十个小时我都在学习在线课程、家庭作业项目,当然还有一些文档阅读

我几乎完成了我的一门课程。我的最后一个项目是创建简单的纸牌游戏,我已经完成了(代码如下)。我想简单地解释一下我的游戏是关于什么的。这是一款简单的“赌博”猜牌游戏,玩家数量不确定。玩家只需猜测下一张牌是比上一张牌低还是高,然后根据自己的判断赢还是输来下注

就我测试而言,我的代码是有效的(我发现了一个到目前为止我无法解决的bug——当所有玩家在一轮中失败时,他们并没有像应该的那样被踢出游戏)

无论如何,我的主要问题是我不知道如何在我的代码中实现这一点: 在游戏过程中的任何时候,有人都应该能够键入“-help”带到屏幕上,在那里他们可以阅读游戏规则和如何玩的说明。阅读完毕后,他们应该能够键入“-resume”返回游戏,并从中断的地方重新开始。 (我在这里发现了非常相同的问题:)

我在谷歌上搜索了一下,发现唯一有用的东西是
help()
函数。我试图实现它,但我不确定它是否正确选择了如何实现--help和--resume标志(这甚至被称为标志吗?我不能100%确定所有Python术语)

我的代码是:

from random import shuffle, randrange


def cardDeck():  # create deck of the cards

    cardDeck = []
    for value in range(4):  # four sets of cards
        for i in range(2, 11):  # for number values
            if value == 0:
                cardDeck.append(str(i) + '♠')
            if value == 1:
                cardDeck.append(str(i) + '♣')
            if value == 2:
                cardDeck.append(str(i) + '♦')
            if value == 3:
                cardDeck.append(str(i) + '♥')
    figures = ['J', 'Q', 'K', 'A']
    for figure in figures:  # for four set of figures
        cardDeck.append(str(figure) + '♠')
        cardDeck.append(str(figure) + '♣')
        cardDeck.append(str(figure) + '♦')
        cardDeck.append(str(figure) + '♥')
    shuffle(cardDeck)
    return cardDeck


class Player: # define player class
    def __init__(self, nickname='Player', bankroll=100, value=0):
        self.nick = nickname
        self.bankroll = int(bankroll)
        self.value = value
        self.BetKind = ''
        self.amount = 0

    def __str__(self):
        return self.nick + ' plays'

    def win(self):

        self.bankroll += 2 * int(self.amount)

    def MassBet(self):

        for i in range(1000):
            self.amount = int(input('how much do you want to bet? '))
            if self.amount <= self.bankroll:
                break
            else:
                print('You can bet only your current bank!')
        for i in range(1000):
            self.BetKind = input('higher/lower [h/l] ')
            if self.BetKind == 'h' or self.BetKind == 'l':
                break
            else:
                print("Please enter only 'h' or 'l' ")
        self.bankroll -= int(self.amount)

    def GetValue(self, card):
        self.value = Values[card[0:-1]]


Deck = cardDeck()
Values = {'2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7,
          '8': 8, '9': 9, '10': 10, 'J': 11, 'Q': 12, 'K': 13, 'A': 14} # define value of each card

PlayerList = []
NPlayers = int(input('How many players are going to play? ')) # Here you can define players
for i in range(NPlayers):
    print('Inicialization, player ', i+1)
    nickname = input('What is your nickname? ')
    bankroll = input('What is your bank? ')
    player = Player(nickname, bankroll)
    PlayerList.append(player)


oldCardsValues = []
oldCardsValues.append(Deck[-1]) # first card that everybody see
Deck.pop()
round = 0
while True:
    print('You bet againts: ', oldCardsValues[-1])
    for player in PlayerList:       # define kind of the bet for each player
        print(player.nick+', ', end = '')
        player.MassBet()
    DrawCard = Deck.pop()
    if NPlayers == 1:
        print('You draw: ', DrawCard)
    else:
        print('All players bet! Draw is: ', DrawCard)
    for player in PlayerList: # define if player won or lost
        player.GetValue(DrawCard)
        if player.BetKind == 'l':
            if Values[oldCardsValues[-1][0:-1]] > player.value:
                player.win()
                print(player.nick,'won! New bankroll: ', player.bankroll)
            elif Values[oldCardsValues[-1][0:-1]] < player.value:
                print(player.nick, 'lost! New bankroll: ', player.bankroll)
            else:
                print('Same card', player.nick, 'lost')
        elif player.BetKind == 'h':
            if Values[oldCardsValues[-1][0:-1]] < player.value:
                player.win()
                print(player.nick,'won! New bankroll: ', player.bankroll)
            elif Values[oldCardsValues[-1][0:-1]] > player.value:
                print(player.nick, 'lost! New bankroll: ', player.bankroll)
            else:
                print('Same card', player.nick, 'lost')
        print(player.bankroll)
        if player.bankroll <= 0: # if player run out of cash he is out
            print(player.nick, 'I am sorry, you run out of your cash. You are out.')
            PlayerList.remove(player)
    if len(PlayerList) == 0: # if there are no remaining players game is over
        print('No more players left. Game Over!')
        break

    round += 1
    MixCoeficcient = randrange(25, 35)
    if len(Deck) < MixCoeficcient: # create new deck in random interval of the remaining cards
        Deck = cardDeck()

    oldCardsValues.append(DrawCard)
    print('-'*40)

来自随机导入洗牌,随机范围
def cardDeck():#创建卡片组
cardDeck=[]
对于范围(4)中的值:#四套卡
对于范围(2,11)中的i:#对于数值
如果值==0:
cardDeck.append(str(i)+'♠')
如果值==1:
cardDeck.append(str(i)+'♣')
如果值==2:
cardDeck.append(str(i)+'♦')
如果值==3:
cardDeck.append(str(i)+'♥')
数字=['J'、'Q'、'K'、'A']
对于数字中的数字:#对于四组数字
cardDeck.append(str(图)+'♠')
cardDeck.append(str(图)+'♣')
cardDeck.append(str(图)+'♦')
cardDeck.append(str(图)+'♥')
洗牌(牌组)
回程卡片组
玩家类别:#定义玩家类别
定义初始值(self,昵称='Player',资金=100,值=0):
self.nick=昵称
self.bankroll=int(bankroll)
自我价值=价值
self.BetKind=''
self.amount=0
定义(自我):
return self.nick+“plays”
def win(自我):
自助资金+=2*int(自助金额)
def MassBet(自):
对于范围(1000)内的i:
self.amount=int(输入('您想赌多少?'))
如果self.amount.value:
player.win()
打印(player.nick,'won!新资金:',player.bankroll)
elif值[oldCardsValue[-1][0:-1]]player.value:
打印(player.nick,“丢失!新资金:”,player.bankroll)
其他:
打印('同一张牌',player.nick,'丢失')
打印(玩家。资金)

如果player.bankroll为了能够在游戏中的任何地方获得“-help”或“-resume”提示,您需要在通常使用Python的常规
input()
函数的每个地方使用一个特殊的输入函数。类似这样:

def specialInput(提示):
动作=输入(提示)
如果操作=='--help':
打印(“您需要帮助”)
#转到帮助屏幕
showHelp()
返回特殊输入(提示)
elif操作=='--resume':
打印(“您想继续”)
#继续比赛
#简历()
返回特殊输入(提示)
其他:
返回动作
此函数使用给定的提示获取输入,并检查它是否等于
--help
--resume
。如果是,它将显示帮助或继续执行程序。

这不一定是必要的(这对我来说非常有意义:)谢谢你的帮助。我点击“接受”按钮,还有什么我需要做的来结束这个问题吗?(比如在GitHub上?)这是我的第一个问题,没什么,就这样!在Stackoverflow上,你只要接受答案,你就行了!