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)
예제 #2
0
    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
예제 #4
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