0
I’m developing a game based on zombie Dice, in Python.
I’m having trouble with the use of the list specifically copo[]
, where I need to remove the played dice and then put them back into the game using the function adicionar_dados()
I defined, but when running the program I end up finding the error:
Indexerror: list index out of range.
Where am I going wrong?
Follow the code below:
import random
comeca_partida = False
#define dados
dado_verde = "C,P,C,T,P,C" # 6 dados verdes
dado_amarelo = "T,P,C,T,P,C" # 4 dados amarelos
dado_vermelho = "T,P,T,C,P,T" # 3 dados vermelhos
copo = []
def adicionar_dados(): #adicionar os dados
for i in range(0, 6):
copo.append(dado_verde)
for i in range(0, 4):
copo.append(dado_amarelo)
for i in range(0, 3):
copo.append(dado_vermelho)
turno = 0
numero_jogadores = int(input("Digite o número de jogadores na partida: \n"))
lista_jogadores = []
for ind in range(0, numero_jogadores):
nome = input("Qual o nome do jogador? \n")
if numero_jogadores >= 2:
comeca_partida = True # iniciar a partida
cerebros = 0
tiros = 0
adicionar_dados()
i = 1
while (i < numero_jogadores +1):
player = dict({'jogador': i, 'cerebros': 0, 'tiros': 0})
lista_jogadores.append(player)
i = i + 1
print("Partida iniciada! ")
while comeca_partida == True:
for player[i] in lista_jogadores:
try:
print("\n olá, {}, digite o que deseja fazer:".format(nome))
jogar = int(input("[1] - Jogar os dados, [2] Finalziar turno ou [3] Trocar de jogador: \n"))
except:
print("valor inválido!")
if jogar == 1:
for i in range(0, 3):
num_sorteado = int(random.randrange(0, 12))
print("Dado sorteado {}: {} ".format((i + 1), num_sorteado))
dado_sorteado = copo[num_sorteado] # 'lança' o dado e verifica qual a face sorteada
face_dado = int(random.randrange(0, 5)) # obtem a face do dado
if dado_sorteado[face_dado] == "C": # tirou "cerebro no dado
print("Você comeu um cérebro!!")
cerebros = cerebros + 1
copo.remove(dado_sorteado)
elif dado_sorteado[face_dado] == "T": # tirou tiro no dado
print("Você levou um tiro!!")
tiros = tiros + 1
copo.remove(dado_sorteado)
else:
print("A vítima escapou!!")
elif jogar == 2:
pontos = cerebros
print("Turno finalizado! Fez", pontos, "pontos!")
print(lista_jogadores)
turno += 1
tiros = 0
elif jogar == 3:
print("Próximo jogador!")
adicionar_dados()
#trocar jogador ???
else:
print("O jogo precisa de 2 ou mais jogadores!")
Hello, Ricardo, the error is happening because you remove the items from the list
copo
each round, but the variablenum_sorteado
continues raffling a number from 0 to 11, so when your dice only have, for example, 6 remaining items, and you draw the number 9, you will return this error.– Felipe Gambini