Python - batalla pokemon 2 ¡¡ ayuda com loop "es tu turno"!!!

 
Vista:

batalla pokemon 2 ¡¡ ayuda com loop "es tu turno"!!!

Publicado por yo (3 intervenciones) el 11/03/2019 18:36:32
este es el codigo que resuta en un loop infinito en el que se impprime estu turno.a alguien le ha pasado esto antes? por que? grxs por su ayuda
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
import random
 
lugia=300
mew=200
celebi=150
pikachu=100
mew2=340
noibern=50
pkm=[lugia,mew,celebi,pikachu,mew2,noibern]
 
atq1=20
atq2=14
atq3=11
atq4=4
 
atk=[atq1,atq2,atq3,atq4]
 
print("batalla pokemon")
 
print("escoge tu pokemon; lugia, mew, celebi, pikachu, mew2,noibern")
 
yo=input()
 
if yo=="lugia":
    yo=lugia
    print("has escogido a lugia")
elif yo=="mew":
    yo=mew
    print("has escogido a mew")
elif yo=="celebi":
    yo=celebi
    print("has escogido a celebi")
elif yo=="mew2":
    yo=mew2
    print("has escogido a mew2")
elif yo=="pikachu":
    yo=pikachu
    print("has escogido a pikachu")
elif yo=="noibern":
    yo=noibern
    print("has escogido a noibern")
 
cpu= random.choice(pkm)
if cpu==pikachu:
   cpu=pikachu
   print ("cpu pokemon es pikachu")
elif cpu==mew:
   cpu=mew
   print ("cpu pokemon es mew")
elif cpu==mew2:
   cpu=mew2
   print ("cpu pokemon es mew2")
elif cpu==lugia:
   cpu=lugia
   print ("cpu pokemon es lugia")
elif cpu==celebi:
   cpu=celebi
   print ("cpu pokemon es celebi")
elif cpu==noibern:
    cpu=noibern
    print("cpu pokemon es noibern")
 
 
turno=random.randint(0,1)
 
print(turno)
 
while yo>=0 and cpu>=0:
    if turno==0:
        print("es tu turno")
        if yo=="noibern":
         print("tienes 4 ataques a escoger:")
         print("aliento dragon")
         print("volar")
         print("garra dragon")
         print("puñetazo")
         att=input()
         if att=="aliento dragon":
          att=atq3
         elif att=="volar":
          att=atq4
         elif att=="garra dragon":
          att=atq1
         elif att=="puñetazo":
          att=atq2
         print("atacas con: ",att)
         cpu=att-cpu
         turno=turno-1
        elif yo=="mew":
         print("tienes 4 ataques a escoger:")
         print("rayo psiquico")
         print("puñetazo")
         print("psiquico")
         print("arañazo")
         att=input()
        elif yo=="mew2":
          print("tienes 4 ataques a escoger:")
          print("rayo psiquico")
          print("puñetazo")
          print("psiquico")
          print("arañazo")
          att=input()
          if att=="rayo psiquico":
           att=atq3
          elif att=="puñetazo":
           att=atq4
          elif att=="psiquico":
           att=atq1
          elif att=="arañazo":
           att=atq2
          cpu=att-cpu
          turno=turno-1
        elif yo=="celebi":
          print("tienes 4 ataques a escoger:")
          print("rayo solar")
          print("rayo psiquico")
          print("latigocepa")
          print("cabezaso")
          att=input()
          if att=="rayo psiquico":
           att=atq3
          elif att=="latigazo":
           att=atq4
          elif att=="rayo solar":
           att=atq1
          elif att=="cabezaso":
           att=atq2
          cpu=att-cpu
          turno=turno-1
        elif yo=="pikachu":
          print("tienes 4 ataques a escoger:")
          print("impac-trueno")
          print("cola de hierro")
          print("arañazo")
          print("onda trueno")
          att=input()
          if att=="impac-trueno":
           att=atq3
          elif att=="cola de hierro":
           att=atq4
          elif att=="arañazo":
           att=atq1
          elif att=="onda trueno":
           att=atq2
          cpu=att-cpu
          turno=turno-1
        elif yo=="lugia":
          print("tienes 4 ataques a escoger:")
          print("hiper rayo")
          print("volar")
          print("rapidez")
          print("cabezaso")
          att=input()
          if att=="hiper rayo":
           att=atq3
          elif att=="volar":
           att=atq4
          elif att=="rapidez":
           att=atq1
          elif att=="cabezaso":
           att=atq2
          cpu=att-cpu
          turno=turno-1
    else:
        if turno==0:
         print("comienza cpu")
         at=random.choice(atk)
         print("cpu ataca con ",atk)
         yo=yo-at
         print("tienes",yo,"de vida")
         turno=turno+1
 
 
 
if yo <0 or yo==0:
    print("perdiste loca, no tenias ninguna oportunidad")
else:
    print("ganaste, era imposible pero ganaste")





la idea principal es que tengas la posibilidad de escoger a tu pokemon y tambien los ataques segun el pokemon que elejiste...
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
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

batalla pokemon 2 ¡¡ ayuda com loop "es tu turno"!!!

Publicado por tincopasan (1082 intervenciones) el 12/03/2019 01:27:57
siempre queda mal lo que digo, pero la verdad es que es tanto código y con una lógica que deja mucho que desear, que no dan ganas de corregir. En este caso no lo corrijo, pero te muestro un código nuevo que cumple, y con algunas mejoras el tuyo.
Si es una tarea, lo lamento, si es un proyecto personal, como consejo te digo, pyhon es más que lo que usas. Espero no te ofendas.
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
#-*- coding: utf -8 -*-
import random
 
pkm = {"lugia":300,"mew":200,"celebi":150,"pikachu":100,"mew2":340,"noibern":50}
atk = {"atq1":20,"atq2":14,"atq3":11,"atq4":4}
movimientos = {"lugia":["hiper rayo","volar","rapidez","cabezaso"],
               "mew":["rayo psiquico","puñetazo","psiquico","arañazo"],
               "celebi":["rayo solar","rayo psiquico","latigocepa","cabezaso"],
               "pikachu":["impac-trueno","cola de hierro","arañazo","onda trueno"],
               "mew2":["rayo psiquico","puñetazo","psiquico","arañazo"],
               "noibern":["aliento dragon","volar","garra dragon","puñetazo"] }
 
print("Batalla pokemon")
print("Escoge tu pokemon:")
print ([pk for pk in pkm.keys()])
 
yo = input("escoger: ")
 
while not yo in pkm:
    print("no has elegido un pokemon de la lista")
    yo=input("escoger: ")
 
print("has escogido a: ",yo)
cpu= random.choice( [x for x in pkm.keys()])
print("cpu pokemon es:  ",cpu)
 
turno = 1
 
vidayo = pkm.get(yo)
vidacpu = pkm.get(cpu)
 
while vidayo > 0 or vidacpu > 0:
    print("es tu turno: ", turno)
    print("tienes 4 ataques a escoger:")
    for x in enumerate(movimientos.get(yo),1):
        print(x)
 
    ataque= int(input("ataque nùmero: "))
    while not ataque in range(1,5):
        print("No es un número de ataque válido")
        ataque= int(input("ataque nùmero: "))
 
    daño1 = "atq" + str(random.choice(range(1,5))) #para que el ataque sea aleatorio
    daño2 =  "atq" + str(random.choice(range(1,5)))
    dañoyo = atk.get(daño2)  # daño que recibo
    dañocpu=atk.get(daño1)  #daño de la cpu
    vidayo-= dañoyo
    vidacpu-= dañocpu
    turno+=1
 
if vidayo <= 0:
    print("Perdiste, no tenías ninguna oportunidad")
else:
    print("Ganaste, era imposible... pero ganaste ")


puede mejorarse pero fijate la cantidad de líneas que se ahorran.
Saludos.
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