'need to end the players turn but instead my code keeps repeating itself infinitely (python)
So it basically should stop when tiros get to 3, but instead, when it gets to 3 the code just keeps runnining with no chance to input anything, it just keep writing the output of the results and incrementing infinitely.
here it is the full code
import random
import sys
import time
from os import system, name
num_jogadores = 0
min_jogadores = 2
dados = {"d_verde": {0: "cérebro", 1: "cérebro", 2: "cérebro", 3: "espingarda", 4: "pegada", 5: "pegada"}, "d_amarelo": {0: "cérebro", 1: "cérebro", 2: "espingarda", 3: "espingarda", 4: "pegada", 5: "pegada"}, "d_vermelho": {0: "cérebro", 1: "espingarda", 2: "espingarda", 3: "espingarda", 4: "pegada", 5: "pegada"}}
tiros = 0
cerebros = 0
#função para limpar o console
def limpar_tela():
if name == 'nt':
_ = system('cls')
#função para sortear a cor do dado
def cor_seletor():
cor = random.randrange(13)
if cor < 6:
return "verde"
elif cor >= 6 and cor < 10:
return "amarelo"
elif cor >= 10 and cor < 13:
return "vermelho"
#definir qual lado será escolhido aleatoriamente
def dado_lado():
lado = random.randrange(6)
return lado
def jogar_dados():
dado = cor_seletor()
lado = dado_lado()
if dado == "verde":
return (dado, dados["d_verde"][lado])
elif dado == "amarelo":
return (dado, dados["d_amarelo"][lado])
elif dado == "vermelho":
return (dado, dados["d_vermelho"][lado])
def rodada():
global cerebros
global tiros
j = 0
while j < 3:
cor_dado, resultado = jogar_dados()
if resultado == "cérebro":
cerebros += 1
elif resultado == "espingarda":
tiros += 1
print("A cor do seu dado foi:", cor_dado, ", e a face foi:", resultado,"!")
j += 1
print("Cérebros: ", cerebros, " e Tiros:", tiros)
#menu inicial.
print("Bem-vindos ao ZOMBIE DICE!")
inicio = input("Para começar o jogo digite qualquer coisa para começar ou para sair do jogo digite 'sair'\n")
if inicio.casefold() == "sair":
limpar_tela()
sys.stdout.write("Saindo...")
sys.stdout.flush()
time.sleep(1)
sys.exit()
else:
print("Vamos começar!")
jogar = input("Caso esteja pronto para o jogo, digite s, caso não esteja, digite n: ")
here is the part of the code that keeps repeating after the counter of tiros get past 3
while jogar not in "sn":
print("Sinto muito, sua resposta precisa ser 's' ou 'n' ")
jogar = input("Caso esteja pronto para o jogo, digite 's', caso não esteja, digite 'n': ")
else:
if jogar == "n":
print("Obrigado por jogar!")
while jogar == "s":
rodada()
if tiros < 3:
jogar = input("Você gostaria de rolar novamente? Caso sim, digite 's' caso não 'n': ")
while jogar not in "sn":
print("Sinto muito, sua resposta precisa ser 's' ou 'n'")
jogar = input("Você gostaria de rolar novamente?\n Digite 's' para sim e 'n' para não")
else:
if jogar == "s":
print("Jogando novamente...")
else:
print("Sua vez acabou.")
else:
print("Você tem três espingardas, seu turno acabou.")
play = "n"
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
