Python - problema con condicionales

 
Vista:

problema con condicionales

Publicado por jorge (1 intervención) el 15/09/2008 14:02:45
hola, soy nuevo en python y estoy haciendo un juego para ir practicando. Sin embargo, tengo un problema con los condicionales, ya que python los ignora. El código es el siguiente:

import random
#Módulo para atacar en los juegos, damos valores, y listo
vida = 100
ataque = 30
defensa = 25
evasion = 3 #Por ahora no sirve
#ahora el enemigo
vidaen = 98
ataqueen = 24
defensaen = 20
evasionen = 1 #Por ahora no sirve
raw_input("Empieza el combate, ENTER para continuar")
#Con esto iniciamos el combate
def atacar(ataque,defensa,evasion,ataqueen,defensaen,evasionen,vidaen,vida):
print "Turno del jugador"
ataquesi = random.randint(1, 100) #Probabilidad de atacar
evasionensi = random.randint(1, 100) #Probabilidad de evasión enemiga
if ataquesi > 10 and evasionensi < 90: #Si se saca + de 10 para atacar y menos de 90 en evasion...
total = ataque - defensaen
print "Jugador ataca a enemigo, daño total:"
print total
vidaen = vidaen - total
print "El enemigo tiene",vidaen,"puntos de vida"
#lo dejamos por un momento así
else:
print "Jugador falla al atacar"
#lo dejamos por un momento así
print "Turno del enemigo"
ataqueensi = random.randint(1, 100) #Probabilidad de atacar
evasionsi = random.randint(1, 100) #Probabilidad de evasión enemiga
if ataqueensi > 10 and evasionsi < 90: #Si se saca + de 10 para atacar y menos de 90 en evasion...
total = ataqueen - defensa
print "Enemigo ataca a jugador, daño total:"
print total
vida = vida - total
print "El Jugador tiene",vida, "puntos de vida"
#lo dejamos por el momento así
else:
print "Enemigo falla al atacar"
#lo dejamos por el momento así
#veamos que pasa cuando se muere
print
if (vida < 0):
print "Enemigo mata a Jugador"
print "Has perdido"
raw_input()
else:
atacar(ataque,defensa,evasion,ataqueen,defensaen,evasionen,vidaen,vida)
print
if (vidaen < 0):
print "Jugador mata a enemigo"
print "Has ganado este combate"
raw_input()
else:
atacar(ataque,defensa,evasion,ataqueen,defensaen,evasionen,vidaen,vida)
print
atacar(ataque,defensa,evasion,ataqueen,defensaen,evasionen,vidaen,vida)

Todo va bien, pero la última parte no funciona, en teoría cuando "vida" o "vidaen" llega a cero, tendría que parar y avisarte, sin embargo, no lo hace y el programa sigue hasta el infinito :P

¿Qué estoy haciendo mal?. gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema con condicionales

Publicado por Luesmo_2 (9 intervenciones) el 15/09/2008 21:28:50
Yo lo podría mirar, pero como sabes en python la identación es primordial y aquí te puedes perder.

Si mandas un fichero de texto, seguro que entre todos lo sacamos.

Luis...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con condicionales

Publicado por andres (1 intervención) el 16/09/2008 02:16:18
puedes poner un condicional al final que diga

if vida and vidaen ==0:
print "perdiste"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con condicionales

Publicado por Luesmo2 (9 intervenciones) el 16/09/2008 14:12:30
No sé si lo habré identado bien, de todas formas es bastante difícil que llegues a:
if (vidaen < 0):

Ya que antes tienes un If...else.
if (vida < 0):
print "Enemigo mata a Jugador"
print "Has perdido"
raw_input()
else:
atacar(ataque,defensa,evasion,ataqueen,defensaen,evasionen,vidaen,vida)
print

Si vida not(<0) se ejecuta el else y no llega al siguiente if. Si es <0 esperará a que pulse una tecla y entonces dependerá de cómo esté el identado, pero si not(videaen<0) continuará el juego.

Supongo que "atacar(....." debe estar fuera del def, porque si no puede llegarte a dar error por excederse en profuncidad recursiva. Pero no lo sé, el hecho es que deberías probar a poner "elif" en los "if" para comprender mejor el asunto.

Si quieres me mandas el fichero "py" a mi correo y así lo miro mejor.

Luis....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar