Python 猜牌游戏及帮助实现
我是Python新手,最初的几十个小时我都在学习在线课程、家庭作业项目,当然还有一些文档阅读 我几乎完成了我的一门课程。我的最后一个项目是创建简单的纸牌游戏,我已经完成了(代码如下)。我想简单地解释一下我的游戏是关于什么的。这是一款简单的“赌博”猜牌游戏,玩家数量不确定。玩家只需猜测下一张牌是比上一张牌低还是高,然后根据自己的判断赢还是输来下注 就我测试而言,我的代码是有效的(我发现了一个到目前为止我无法解决的bug——当所有玩家在一轮中失败时,他们并没有像应该的那样被踢出游戏) 无论如何,我的主要问题是我不知道如何在我的代码中实现这一点: 在游戏过程中的任何时候,有人都应该能够键入“-help”带到屏幕上,在那里他们可以阅读游戏规则和如何玩的说明。阅读完毕后,他们应该能够键入“-resume”返回游戏,并从中断的地方重新开始。 (我在这里发现了非常相同的问题:) 我在谷歌上搜索了一下,发现唯一有用的东西是Python 猜牌游戏及帮助实现,python,python-3.x,Python,Python 3.x,我是Python新手,最初的几十个小时我都在学习在线课程、家庭作业项目,当然还有一些文档阅读 我几乎完成了我的一门课程。我的最后一个项目是创建简单的纸牌游戏,我已经完成了(代码如下)。我想简单地解释一下我的游戏是关于什么的。这是一款简单的“赌博”猜牌游戏,玩家数量不确定。玩家只需猜测下一张牌是比上一张牌低还是高,然后根据自己的判断赢还是输来下注 就我测试而言,我的代码是有效的(我发现了一个到目前为止我无法解决的bug——当所有玩家在一轮中失败时,他们并没有像应该的那样被踢出游戏) 无论如何,我的
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上,你只要接受答案,你就行了!