como hacer para que no se caiga el programa al ingresar un numero fuera del rango
Publicado por Rafael (3 intervenciones) el 10/05/2019 01:13:00
el tema amigos es que al ingresar un numero fuera de rango o un carácter el programa se cae, si me podrian ayudar porfa soy nuevo en esto, les muestro mi juego (aun falta corregir algunas cosas de texto pero no muy influyentes)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import random
import textwrap
def print_bold(msg):
#Funcion para mostrar por pantalla un string en negrita
print("\033[1m"+msg+"\033[0m")
def print_linea_punteada(width=72):
print('-'*width)
def ocupar_casas():
ocupantes = ['chanchito con escopeta','chanchitos indefensos ']
casas = []
while len(casas) < 2 : #Definimos un número de asentamiento para establecerlo como amigo o enemigo
eleccion_aleatoria = random.choice(ocupantes)
casas.append(eleccion_aleatoria)
return casas
def mostrar_mision():
print("\033[1m"+ "comerte a los chanchitos V0.5" + "\033[0m")
msg = ("Un lobo quiere cenar unos chanchitos, pero estos son inteliguentes y construyen 2 casas para luego esconderse todos en una casa, el lobo tiene que elgir una pero cuidado!, los chanchitos pueden estar armados")
print(textwrap.fill(msg, width = 72))
print("\033[1m"+"Misión:"+"\033[0m")
print("Elige una casa a cual entrar, solo tendras una oportunidad para atrapar a los chanchitos")
print("\033[1m"+"NOTA:"+"\033[0m")
print("¡Cuidado! pueden estar armados")
print_linea_punteada()
def mostrar_salud(medidor_salud, bold):
if bold:
print_bold("lobo:")
print_bold("%d"%(medidor_salud['jugador']))
print_bold("Salud Enemigo:")
print_bold("%d"%(medidor_salud['enemigo']))
else:
print("lobo:")
print("%d"%(medidor_salud['jugador']))
print("Salud Enemigo:")
print("%d"%(medidor_salud['enemigo']))
def procesar_decision_usuario():
msg = "\033[1m" + "Elige una casa, introduce un número entre 1 y 2: " + "\033[0m"
decision_usuario = input("\n"+msg)
idx = int(decision_usuario)
return idx
def reset_medidor_salud(medidor_salud):
medidor_salud['jugador']=40
medidor_salud['enemigo']=30
def atacar(medidor_salud):
lista_golpes = 4*['jugador']+6*['enemigo']
unidad_herida = random.choice(lista_golpes)
puntos_vida = medidor_salud[unidad_herida]
herida = random.randint(12 ,15)
medidor_salud[unidad_herida] = max(puntos_vida- herida,0)
print("¡Ataque!")
mostrar_salud(medidor_salud,bold=False)
def revelar_ocupantes(idx, casas):
msg=""
print("Revelando los ocupantes...")
for i in range(len(casas)):
ocupantes_info = "<%d:%s>"%(i+1, casas[i])
if i+1 == idx:
ocupantes_info = "\033[1m" + ocupantes_info + "\033[0m"
msg += ocupantes_info + " "
print("\t" + msg)
print_linea_punteada()
#En la siguiente función se establece un sistema de combate iterativo
def play_game(medidor_salud):
casas = ocupar_casas()
idx = procesar_decision_usuario()
revelar_ocupantes(idx, casas)
if casas[idx-1] != 'chanchito con escopeta':
print_bold("¡te has comido a los chanchitos porque estaban indefensos")
else:
print_bold('¡Chanchitos encontrados cuidado estan armados !')
mostrar_salud(medidor_salud, bold=True)
continuar_ataque = True
while continuar_ataque:
continuar_ataque = input("...continuar con el ataque? Si(1)/No(0)")
if continuar_ataque == 0:
print_bold("Huyendo con el siguiente estado de salud...")
mostrar_salud(medidor_salud, bold=True)
print_bold("¡Game Over!")
break
atacar(medidor_salud)
if medidor_salud['enemigo'] <=0:
print_bold("¡el lobo se ha comido alos chanchitos!")
break
if medidor_salud['jugador'] <=0:
print_bold("el lobo a muerto ...")
break
#Funcion para hacer funcionar el programa principal que queremos ejecutar
def run_application():
seguir_jugando = 1
medidor_salud = {}
reset_medidor_salud(medidor_salud)
mostrar_mision()
while seguir_jugando == 1:
reset_medidor_salud(medidor_salud)
play_game(medidor_salud)
seguir_jugando = input("¿Quieres jugar de nuevo? Si(1)/No(0):")
if __name__ == '__main__':
run_application()
Valora esta pregunta


0