我在开发僵尸骰子游戏的代码。
我的问题是当第一个玩家回答说他不想继续玩了。
游戏结束了,我找不到第二个玩家。有人能帮我吗?
import random
print("========== ZOMBIE DICE (PROTÓTIPO SEMANA 4) ==========")
print("========= WELCOME TO THE ZOMBIE DICE GAME! ========")
numeroJogadores = 0
while numeroJogadores < 2:
numeroJogadores = int(input("Enter the number of players: "))
print(numeroJogadores)
if numeroJogadores < 2:
print("NOTICE: You must have at least 2 players to continue!")
listaJogadores = []
for i in range(numeroJogadores):
nome = str(input("\nEnter player name: " + str(i+1) + ": "))
listaJogadores.append(nome)
print(listaJogadores)
dadoVerde = ("brain", "steps", "brain", "shot", "steps", "brain")
dadoAmarelo = ("shot", "steps", "brain", "shot", "steps", "brain")
dadoVermelho = ("shot", "steps", "shot", "brain", "steps", "shot")
listaDados = [dadoVerde, dadoVerde, dadoVerde, dadoVerde, dadoVerde, dadoVerde,
dadoAmarelo, dadoAmarelo, dadoAmarelo, dadoAmarelo,
dadoVerde, dadoVermelho, dadoVermelho]
print("\nSTARTING THE GAME...")
jogadorAtual = 0
dadosSorteados = []
tiros = 0
cerebros = 0
passos = 0
while True:
print("PLAYER TURN: ", listaJogadores[jogadorAtual])
for i in range (3):
numeroSorteado = random.randint(0, 12)
dadoSorteado = listaDados[numeroSorteado]
if (dadoSorteado == dadoVerde):
corDado = "Green"
elif (dadoSorteado == dadoAmarelo):
corDado = "Yellow"
else:
corDado = "Red"
print("Dice Drawn: ", corDado)
dadosSorteados.append(dadoSorteado)
print("\nThe faces drawn were: ")
for dadoSorteado in dadosSorteados:
numeroFaceDado = random.randint(0,5)
if dadoSorteado[numeroFaceDado] == "brain":
print("- brain (you ate a brain)")
cerebros = cerebros + 1
elif dadoSorteado[numeroFaceDado] == "tiro":
print("- shot (you got shot)")
tiros = tiros + 1
else:
print("- steps (a victim escaped)")
passos = passos + 1
print("\nCURRENT SCORE: ")
print("brins: ", cerebros)
print("shots: ", tiros)
if cerebros >= 13:
print("Congratulations, you've won the game!")
break
elif tiros >= 3:
print("You lost the game!")
break
else:
continuarTurno = str(input("\nNOTICE: Do you want to continue playing dice? (y=yes / n=no)")).lower()
if continuarTurno == "n":
jogadorAtual = jogadorAtual + 1
dadossorteados = 0
tiros = 0
cerebros = 0
passos = 0
if jogadorAtual > numeroJogadores:
print("Finalizing the game prototype")
else:
print("Starting another round of the current turn")
dadossorteados = []
print("======================================================")
print("===================== END OF THE GAME ====================")
print("======================================================")
有人知道我做错了什么吗?
我是一个新的程序员。如果有人知道如何帮助我解决这个问题,我将不胜感激。
1条答案
按热度按时间i86rm4rw1#
编辑:好了,现在代码可以正常工作了。我可以很好地切换玩家,但是如果你检查所有的角色,它会再次崩溃,因为
jogadorAtual
对于listaJogadores
来说太大了。我不是很理解这个游戏,但是假设你想从第一个玩家开始,一个优雅的方法就是用%
运算符求模。将两个数字相除,但返回余数。如果将玩家人数除以listaJogadores
的大小,得到的数字始终在listaJogadores
的范围内。如果这不是你比赛所需要的,告诉我。
原文回答:游戏结束了还是 * 崩溃了 *?当我运行游戏时,它总是崩溃:
这是因为在循环之后,您尝试执行
diceDrawns.append()
,但是您已经在第87行用一个整数替换了diceDrawns
列表。我不确定您是否打算替换diceDrawn
,但这肯定是问题的根源。一个不相关的注解:你可以用
+=
作为一种简化的方式来增加一个变量,这样你就可以用currentPlayer += 1
来替换很多像currentPlayer = currentPlayer + 1
这样的示例,同样的操作也可以用 any 操作符来完成,所以你也可以做像-=
或*=
这样的事情