def evento(self): if fu.probabilidad(50): nombre = choice(list(self.planetas_conquistados)) print("El archimago ha invadido {}".format(nombre)) planeta = self.planetas[nombre] planeta.invasion_archimago(self.archimago, self.reserva_mineral) if not self.archimago.vivo: print("Unos comerciantes avistan a un descendiente del " + "archimago, se cree que ha decidido seguir el camino " + "del mal y tomar su puesto") self.archimago = cl.Archimago() if not planeta.conquistado: print("El planeta {} ya no está conquisatdo".format(nombre)) self.planetas_conquistados.discard(nombre) if len(self.planetas_conquistados) == 0: print("Te has salvado como el archimago atacó a tu último", "planeta, no lo perderás. Sin embargo, mató a todo", "tu ejército, destruyó tus edificios y además", "dejo tus niveles de desarrollo al mínimo.") planeta.poblacion = 0 planeta.torre = None planeta.cuartel = None planeta.nivel_ataque = 0 planeta.nivel_economia = 0 self.planetas_conquistados.add(nombre) planeta.conquistado = True else: nombre = choice(list(self.planetas_conquistados)) print("Ha caido un asteroide en {}".format(nombre)) print("Ha muerto la mitad de tu ejército") planeta = self.planetas[nombre] self.asteroide.impactar(planeta.impacto_asteroide)
def jugar_partido(self): position = 0 for jugador in self.equipo1.jugadores: prob = 5 for afinidad in self.equipo1.matriz_afinidades[position]: if afinidad < 0.8: prob += 2 position += 1 if fu.probabilidad(prob): self.faltas_eq1 += 1 if fu.probabilidad(20): self.amarillas_eq1.append(jugador.nombre) if fu.probabilidad(5): self.rojas_eq1.append(jugador.nombre) position = 0 for jugador in self.equipo2.jugadores: prob = 5 for afinidad in self.equipo2.matriz_afinidades[position]: if afinidad < 0.8: prob += 2 position += 1 if fu.probabilidad(prob): self.faltas_eq2 += 1 if fu.probabilidad(20): self.amarillas_eq2.append(jugador.nombre) if fu.probabilidad(5): self.rojas_eq2.append(jugador.nombre) esperanza1 = self.equipo1.esperanza * (1 - (self.faltas_eq1 / 100)) esperanza2 = self.equipo2.esperanza * (1 - (self.faltas_eq2 / 100)) self.goles1 = ((esperanza1 / 40)**2) // 1 self.goles2 = ((esperanza2 / 40)**2) // 1 if self.goles1 > self.goles2: ganador = self.equipo1 perdedor = self.equipo2 elif self.goles1 < self.goles2: ganador = self.equipo2 perdedor = self.equipo1 else: if esperanza1 > esperanza2: if fu.probabilidad(80): ganador = self.equipo1 perdedor = self.equipo2 else: ganador = self.equipo2 perdedor = self.equipo1 else: if fu.probabilidad(20): ganador = self.equipo1 perdedor = self.equipo2 else: ganador = self.equipo2 perdedor = self.equipo1 self.ganador = ganador.nombre return ganador, perdedor
def habilidad(self, minerales=inf): if fu.probabilidad(70): print("Se activa la habilidad de Aprendiz para robar minerales") if minerales >= 200: minerales -= 200 return 200 else: robado = minerales minerales -= robado print("La reserva se ha quedado sin minerales") return robado return 0
def jugar_en_galaxia(self, galaxia_real): galaxia = deepcopy(galaxia_real) # creamos una galaxia auxiliar accion = fe.menu_jugar() while accion != 3: if accion == 1: nombre_planeta = galaxia.pedir_planeta() planeta = galaxia.planetas[nombre_planeta] if fu.probabilidad(20): galaxia.evento() if planeta.conquistado: sub_accion = fe.planeta_conquistado() if sub_accion == 1: galaxia.construir_edificio(planeta) elif sub_accion == 2: galaxia.generar_unidades(planeta) elif sub_accion == 3: galaxia.recolectar_recursos(planeta) elif sub_accion == 4: # posible implementación de salir galaxia.realizar_mejoras(planeta) else: sub_accion = fe.planeta_no_conquistado() if sub_accion == 1: victoria = galaxia.invadir_planeta(planeta) # invadido if victoria: galaxia.planetas_conquistados.add(nombre_planeta) elif sub_accion == 2: galaxia.comprar_planeta(nombre_planeta) elif accion == 2: self.galaxias[galaxia.nombre] = deepcopy(galaxia) for nombre_planeta in Galaxia.planetas: planeta, nombre_galaxia = Galaxia.planetas[nombre_planeta] if nombre_galaxia == galaxia.nombre: Galaxia.planetas[nombre_planeta] =\ (galaxia.planetas[nombre_planeta], nombre_galaxia) self.actualizar_datos() # utilizamos deepcopy por si seguimos realizando modificaciones accion = fe.menu_jugar()
def habilidad(self, ataque): if fu.probabilidad(40): print("Se activa la habilidad de Asesino para atacar doble") return ataque * 2 return ataque
def habilidad(self, poblacion): if fu.probabilidad(30): print("Los maestros usan su habilidad para matar a la mitad del" + "ejército enemigo") return int(poblacion // 2) return poblacion