def cargar_personas(self):
     for i in range(N_PERSONAS):
         nombre = get_full_name()
         edad = randint(18, 66)
         nueva_persona = Persona(edad, nombre, 25, -40)
         self.mundo[nueva_persona.persona_id] = nueva_persona
         gui.add_entity(nueva_persona)
 def agrego_cliente(self):
     if random() <= p:
         lista_elegir = [Millonario(), Kibitzer(), Ganador(),
                         Dieciochero(), Ludopata()]
         personaje = choice(lista_elegir)
         personaje.tick_de_llegada = self.ticks
         self.list_personajes.append(personaje)
         gui.add_entity(personaje)
Example #3
0
    def __init__(self):
        self.unit = Skull("warrior", (20, 30), hp=300, size=(100, 100))
        self.building = Building("barracks", pos=(300, 300), hp=400)
        self.building.health = 300
        self.temple = Temple("pezoa", pos=(700, 500), size=(200, 150))
        self.building.in_construction = True

        self.gold = 0

        gui.add_entity(self.unit)
        gui.add_entity(self.building)
        gui.add_entity(self.temple)
    def agregar_instalaciones(self):
        # Se añaden los restobars
        for j in [200, 250]:
            for i in range(400, 626, 75):
                res_1 = Restobar(self,i, j)
                self.instalaciones.append(res_1)
                gui.add_entity(res_1)
        # Se agregan los baños
        for i in range(200, 401, 25):
            ban_1 = Bano(self, 720, i)
            self.instalaciones.append(ban_1)
            gui.add_entity(ban_1)

        # Se agregan los tarots
        res_1 = Tarot(self, 475, 300)
        self.instalaciones.append(res_1)
        gui.add_entity(res_1)
Example #5
0
from gui.entities import Entity, Human
import gui
import os

_PATH = os.path.dirname(os.path.abspath(__file__))

gui.init()

client = Human("ludopata")
client.add_decoration("gui/assets/decoracion/bullet.png")

client.angle = 0
client.y = 0
client.x = 0
ticks = 0


def tick():
    client.x += 1
    client.y += 1
    client.angle = 1


gui.set_size(773, 485)
gui.add_entity(client)
gui.run(tick, 30)
Example #6
0
import math

gui.init()
human = Human(Human.COWARD, Human.NO_WEAPON, cord_x=100, cord_y=100)
human.add_decoration("gui/assets/bullet.png")
zombie = Zombie()
human.angle = 0
ticks = 0


def tick():
    human.cord_x += 1
    human.cord_y += 1
    human.angle += 1


zombies = []
for i in range(20):
    zombie = Zombie(cord_x=random.randint(0, 800),
                    cord_y=random.randint(0, 800))
    gui.add_entity(zombie)
    zombies.append(zombie)

gui.add_entity(human)
gui.add_entity(zombie)
gui.add_entity(GunShopLong(100, 200))
gui.add_entity(GunShopShort(300, 300))
gui.add_entity(Building(300, 200))
gui.add_entity(Bullet(50, 50))
gui.run(tick, 50)
Example #7
0
    def tick(self):

        if self.tiempo_sim >= self.tiempo_max_sim or self.templo_1.en_pie == False or self.templo_2.en_pie == False:

            if self.templo_2.en_pie == False:
                self.estadisticas.resultado_final = self.raza_1

            elif self.templo_1.en_pie == False:
                self.estadisticas.resultado_final = self.raza_2

            self.estadisticas.tasa_extraccion_1 /= self.tiempo_sim
            self.estadisticas.tasa_extraccion_2 /= self.tiempo_sim

            self.estadisticas.tasa_creacion_1 = self.estadisticas.guerreros_creados_1 + \
                                                self.estadisticas.arqueros_creados_1 + \
                                                self.estadisticas.mascotas_creadas_1
            self.estadisticas.tasa_creacion_1 /= self.tiempo_sim

            self.estadisticas.tasa_creacion_2 = self.estadisticas.guerreros_creados_2 + \
                                                self.estadisticas.arqueros_creados_2 + \
                                                self.estadisticas.mascotas_creadas_2
            self.estadisticas.tasa_creacion_2 /= self.tiempo_sim

            self.estadisticas.tasa_muerte_1 = self.estadisticas.guerreros_muertos_1 + \
                                              self.estadisticas.arqueros_muertos_1 + \
                                              self.estadisticas.mascotas_muertas_1

            self.estadisticas.tasa_muerte_2 = self.estadisticas.guerreros_muertos_2 + \
                                              self.estadisticas.arqueros_muertos_2 + \
                                              self.estadisticas.mascotas_muertas_2

            self.estadisticas.tasa_muerte_1 /= self.tiempo_sim
            self.estadisticas.tasa_muerte_2 /= self.tiempo_sim

            print(
                "Guerreros muertos 1: ", self.estadisticas.guerreros_muertos_1,
                "\n", "Arqueros muertos 1: ",
                self.estadisticas.arqueros_muertos_1, "\n",
                "Mascotas muertas 1: ", self.estadisticas.mascotas_muertas_1,
                "\n", "Guerreros muertos 2: ",
                self.estadisticas.guerreros_muertos_2, "\n",
                "Arqueros muertos 2: ", self.estadisticas.arqueros_muertos_2,
                "\n", "Mascotas muertas 2: ",
                self.estadisticas.mascotas_muertas_2, "\n",
                "Guerreros creados 1: ", self.estadisticas.guerreros_creados_1,
                "\n", "Arqueros creados 1: ",
                self.estadisticas.arqueros_creados_1, "\n",
                "Mascotas creadas 1: ", self.estadisticas.mascotas_creadas_1,
                "\n", "Guerreros creados 2: ",
                self.estadisticas.guerreros_creados_2, "\n",
                "Arqueros creados 2: ", self.estadisticas.arqueros_creados_2,
                "\n", "Mascotas creadas 2: ",
                self.estadisticas.mascotas_creadas_2, "\n",
                "Poderes usados 1: ", self.estadisticas.poderes_usados_1, "\n",
                "Poderes usados 2: ", self.estadisticas.poderes_usados_2, "\n",
                "Efecto poder 1: ", self.estadisticas.efecto_poder_1, "\n",
                "Efecto poder 2: ", self.estadisticas.efecto_poder_2, "\n",
                "Tasa muerte 1: ", self.estadisticas.tasa_muerte_1, "\n",
                "Tasa muerte 2: ", self.estadisticas.tasa_muerte_2, "\n",
                "Tasa creacion 1: ", self.estadisticas.tasa_creacion_1, "\n",
                "Tasa creacion 2: ", self.estadisticas.tasa_creacion_2, "\n",
                "Oro gastado 1: ", self.estadisticas.oro_gastado_1, "\n",
                "Oro gastado 2: ", self.estadisticas.oro_gastado_2, "\n",
                "Tasa extracción 1: ", self.estadisticas.tasa_extraccion_1,
                "\n", "Tasa extracción 2: ",
                self.estadisticas.tasa_extraccion_2, "\n",
                "Resultado: Han ganado los " +
                self.estadisticas.resultado_final)

            exit(0)

        # se añaden números para que las unidades no estén muy cerca
        esparcir_x = randint(0, 50)
        esparcir_y = randint(0, 100)

        # mandamos los aldeanos ociosos a la mina
        for aldeano in self.aldeanos_ociosos_1:

            if casi_igual(aldeano.gui.cord_x, self.x_mina_1) and casi_igual(
                    aldeano.gui.cord_y, self.y_mina_1):
                if len(self.aldeanos_recolectando_1) <= 5:
                    self.aldeanos_recolectando_1.append(aldeano)
                    self.aldeanos_ociosos_1.remove(aldeano)
                    aldeano.gui.hide()

            else:
                angulo = angulo_a_entidad(aldeano, self.x_mina_1,
                                          self.y_mina_1)
                aldeano.gui.cord_x += cos(angulo) * aldeano.velocidad_mov
                aldeano.gui.cord_y += sin(angulo) * aldeano.velocidad_mov

        for aldeano in self.aldeanos_ociosos_2:
            if casi_igual(aldeano.gui.cord_x, self.x_mina_2) and casi_igual(
                    aldeano.gui.cord_y, self.y_mina_2):
                if len(self.aldeanos_recolectando_2) <= 5:
                    self.aldeanos_recolectando_2.append(aldeano)
                    self.aldeanos_ociosos_2.remove(aldeano)
                    aldeano.gui.hide()

            else:
                angulo = angulo_a_entidad(aldeano, self.x_mina_2,
                                          self.y_mina_2)
                aldeano.gui.cord_x += cos(angulo) * aldeano.velocidad_mov
                aldeano.gui.cord_y += sin(angulo) * aldeano.velocidad_mov

        # esperamos 5 segundos en la mina
        for aldeano in self.aldeanos_recolectando_1:
            if aldeano.ticks_en_mina >= 200:
                self.aldeanos_trayendo_1.append(aldeano)
                self.aldeanos_recolectando_1.remove(aldeano)
                aldeano.ticks_en_mina = 0
                aldeano.gui.show()

            else:
                aldeano.ticks_en_mina += 1

        for aldeano in self.aldeanos_recolectando_2:
            if aldeano.ticks_en_mina >= 200:
                self.aldeanos_trayendo_2.append(aldeano)
                self.aldeanos_recolectando_2.remove(aldeano)
                aldeano.ticks_en_mina = 0
                aldeano.gui.show()

            else:
                aldeano.ticks_en_mina += 1

        # mandamos los aldeanos que salieron al templo
        for aldeano in self.aldeanos_trayendo_1:
            if casi_igual(aldeano.gui.cord_x, self.x_templo_1) and casi_igual(
                    aldeano.gui.cord_y, self.y_templo_1):
                self.gold_1 += 10 + aldeano.fuerza
                self.estadisticas.tasa_extraccion_1 += 10 + aldeano.fuerza
                gui.set_gold_t1(self.gold_1)
                self.aldeanos_ociosos_1.append(aldeano)
                self.aldeanos_trayendo_1.remove(aldeano)
                if self.objetivo.startswith("Recolectar"):
                    self.cantidad_lograda_1 += 10 + aldeano.fuerza
            else:
                angulo = angulo_a_entidad(aldeano, self.x_templo_1,
                                          self.y_templo_1)
                aldeano.gui.cord_x += cos(angulo) * aldeano.velocidad_mov
                aldeano.gui.cord_y += sin(angulo) * aldeano.velocidad_mov

        for aldeano in self.aldeanos_trayendo_2:
            if casi_igual(aldeano.gui.cord_x, self.x_templo_2) and casi_igual(
                    aldeano.gui.cord_y, self.y_templo_2):
                self.gold_2 += 10 + aldeano.fuerza
                self.estadisticas.tasa_extraccion_2 += 10 + aldeano.fuerza
                gui.set_gold_t2(self.gold_2)
                self.aldeanos_ociosos_2.append(aldeano)
                self.aldeanos_trayendo_2.remove(aldeano)
                if self.objetivo.startswith("Recolectar"):
                    self.cantidad_lograda_2 += 10 + aldeano.fuerza
            else:
                angulo = angulo_a_entidad(aldeano, self.x_templo_2,
                                          self.y_templo_2)
                aldeano.gui.cord_x += cos(angulo) * aldeano.velocidad_mov
                aldeano.gui.cord_y += sin(angulo) * aldeano.velocidad_mov

        self.lista_aldeanos_total_1 = self.aldeanos_recolectando_1 + \
                                      self.aldeanos_trayendo_1 + \
                                      self.aldeanos_ociosos_1 + \
                                      self.aldeanos_construyendo_1

        self.lista_aldeanos_total_2 = self.aldeanos_recolectando_2 + \
                                      self.aldeanos_trayendo_2 + \
                                      self.aldeanos_ociosos_2 + \
                                      self.aldeanos_construyendo_2

        total_aldeanos_1 = len(self.lista_aldeanos_total_1)

        total_aldeanos_2 = len(self.lista_aldeanos_total_2)

        # si faltan aldeanos los creamos
        if total_aldeanos_1 < 6:

            self.templo_1.creando_aldeano = True
            if self.templo_1.ticks_creando_aldeano >= 200:

                aldeano_1_gui = self.unidad_1("villager",
                                              pos=(self.x_templo_1,
                                                   self.y_templo_1),
                                              hp=25)

                aldeano_1 = Aldeano(25, 1, 1, 1, randint(0, 5), aldeano_1_gui)

                gui.add_entity(aldeano_1_gui)
                self.aldeanos_ociosos_1.append(aldeano_1)
                self.templo_1.creando_aldeano = False
                self.gold_1 -= 10
                self.estadisticas.oro_gastado_1 -= 10
                gui.set_gold_t1(self.gold_1)
                self.templo_1.ticks_creando_aldeano = 0

            else:
                self.templo_1.ticks_creando_aldeano += 1

        if total_aldeanos_2 < 6:
            self.templo_2.creando_aldeano = True
            if self.templo_2.ticks_creando_aldeano >= 200:
                aldeano_2_gui = self.unidad_2("villager",
                                              pos=(self.x_templo_2,
                                                   self.y_templo_2),
                                              hp=25)

                aldeano_2 = Aldeano(25, 1, 1, 1, randint(0, 5), aldeano_2_gui)

                gui.add_entity(aldeano_2_gui)
                self.aldeanos_ociosos_2.append(aldeano_2)
                self.templo_2.creando_aldeano = False
                self.gold_2 -= 10
                self.estadisticas.oro_gastado_2 -= 10
                gui.set_gold_t2(self.gold_2)
                self.templo_2.ticks_creando_aldeano = 0
            else:
                self.templo_2.ticks_creando_aldeano += 1

        total_tropas_1 = len(self.lista_guerreros_1) + \
                         len(self.lista_arqueros_1) + \
                         len(self.lista_mascotas_1)

        total_tropas_2 = len(self.lista_guerreros_2) + \
                         len(self.lista_arqueros_2) + \
                         len(self.lista_mascotas_2)

        # si faltan tropas las creamos
        if total_tropas_1 < self.max_tropas_1:

            # creamos los guerreros
            if self.cuartel_1.guerreros_creados < self.guerreros_ciclo_1 and \
                            self.gold_1 > 20 and self.cuartel_1.en_pie:
                crear_guerrero_1(self, gui, self.modificador_daño_1,
                                 self.modificador_velocidad_1,
                                 self.modificador_vida_1)

            # creamos los arqueros
            elif self.cuartel_1.arqueros_creados < self.arqueros_ciclo_1 and \
                            self.gold_1 > 30 and self.cuartel_1.en_pie:
                crear_arquero_1(self, gui, self.modificador_daño_1,
                                self.modificador_velocidad_1,
                                self.modificador_vida_1)

            # creamos las mascotas
            if self.cuartel_1.arqueros_creados == self.arqueros_ciclo_1 and self.gold_1 > 50:
                crear_mascota_1(self, gui, self.modificador_daño_1,
                                self.modificador_velocidad_1,
                                self.modificador_vida_1)

        if total_tropas_2 < self.max_tropas_2:

            if self.cuartel_2.guerreros_creados < self.guerreros_ciclo_2 and \
                            self.gold_1 > 20 and self.cuartel_2.en_pie:

                crear_guerrero_2(self, gui, self.modificador_daño_2,
                                 self.modificador_velocidad_2,
                                 self.modificador_vida_2)

            elif self.cuartel_2.arqueros_creados < self.arqueros_ciclo_2 and \
                            self.gold_1 > 30 and self.cuartel_2.en_pie:

                crear_arquero_2(self, gui, self.modificador_daño_2,
                                self.modificador_velocidad_2,
                                self.modificador_vida_2)

            if self.cuartel_2.arqueros_creados == self.arqueros_ciclo_2 and self.gold_1 > 50:
                crear_mascota_2(self, gui, self.modificador_daño_2,
                                self.modificador_velocidad_2,
                                self.modificador_vida_2)

        # reiniciamos el ciclo
        if self.templo_1.mascotas_creadas == self.mascotas_ciclo_1:
            self.cuartel_1.guerreros_creados = 0
            self.cuartel_1.arqueros_creados = 0
            self.templo_1.mascotas_creadas = 0

        if self.templo_2.mascotas_creadas == self.mascotas_ciclo_2:
            self.cuartel_2.guerreros_creados = 0
            self.cuartel_2.arqueros_creados = 0
            self.templo_2.mascotas_creadas = 0

        # si el heroe desaparece, se reinicia el tiempo de aparición
        if not self.heroe_1_presente:
            self.tiempo_heroe_1 = self.tiempo_sim + round(
                expovariate(self.tasa_invocacion_1))

        if not self.heroe_2_presente:
            self.tiempo_heroe_2 = self.tiempo_sim + round(
                expovariate(self.tasa_invocacion_2))

        # llega el héroe

        if self.tiempo_sim >= self.tiempo_heroe_1 and not self.heroe_1_presente:
            hero_1_gui = self.unidad_1("hero",
                                       pos=(self.x_templo_1 + esparcir_x,
                                            self.y_templo_1 + esparcir_y),
                                       hp=100)
            gui.add_entity(hero_1_gui)

            if self.unidad_1.__name__ == "Orc":
                self.hero_1 = Hero(velocidad_mov=1.5,
                                   puntos_vida=100,
                                   puntos_daño=1,
                                   rango=20,
                                   gui=hero_1_gui)

            if self.unidad_1.__name__ == "Human":
                self.hero_1 = Hero(velocidad_mov=1.5,
                                   puntos_vida=100,
                                   puntos_daño=3,
                                   rango=5,
                                   gui=hero_1_gui)

            if self.unidad_1.__name__ == "Skull":
                self.hero_1 = Hero(velocidad_mov=1.5,
                                   puntos_vida=50,
                                   puntos_daño=3,
                                   rango=5,
                                   gui=hero_1_gui)
                self.hero_1.gui.health = 50
            self.heroe_1_presente = True

        if self.tiempo_sim >= self.tiempo_heroe_2 and not self.heroe_2_presente:

            hero_2_gui = self.unidad_2("hero",
                                       pos=(self.x_templo_2 + esparcir_x,
                                            self.y_templo_2 + esparcir_y),
                                       hp=100)
            gui.add_entity(hero_2_gui)

            if self.unidad_2.__name__ == "Orc":
                self.hero_2 = Hero(velocidad_mov=1.5,
                                   puntos_vida=100,
                                   puntos_daño=1,
                                   rango=20,
                                   gui=hero_2_gui)

            if self.unidad_2.__name__ == "Human":
                self.hero_2 = Hero(velocidad_mov=1.5,
                                   puntos_vida=100,
                                   puntos_daño=3,
                                   rango=5,
                                   gui=hero_2_gui)

            if self.unidad_2.__name__ == "Skull":
                self.hero_2 = Hero(velocidad_mov=1.5,
                                   puntos_vida=100,
                                   puntos_daño=3,
                                   rango=5,
                                   gui=hero_2_gui)
            self.heroe_2_presente = True

        # ataque de las unidades

        self.ejercito_1 = self.lista_guerreros_1 + self.lista_arqueros_1 + self.lista_mascotas_1
        self.objetivos_1 = self.ejercito_1[:] + self.lista_aldeanos_total_1

        self.objetivos_1.append(self.templo_1)

        if self.cuartel_1.en_pie:
            self.objetivos_1.append(self.cuartel_1)

        if self.torreta_1.en_pie:
            self.objetivos_1.append(self.torreta_1)

        self.objetivos_1.append(self.hero_1)

        self.ejercito_2 = self.lista_guerreros_2 + self.lista_arqueros_2 + self.lista_mascotas_2
        self.objetivos_2 = self.ejercito_2[:] + self.lista_aldeanos_total_2

        self.objetivos_2.append(self.templo_2)
        if self.cuartel_2.en_pie:
            self.objetivos_2.append(self.cuartel_2)
        if self.torreta_2.en_pie:
            self.objetivos_2.append(self.torreta_2)

        self.objetivos_2.append(self.hero_2)

        if self.unidad_1.__name__ == "Human":

            for combatiente in self.ejercito_1:

                if combatiente.__class__.__name__ == "Mascota" and self.no_mover_mascotas_1:
                    pass

                elif len(self.ejercito_1) >= 0.75 * len(
                        self.ejercito_2) or combatiente.atacado == True:
                    enemigo = mas_cercano(combatiente, self.objetivos_2)
                    if enemigo and not self.glaciar_en_proceso_2:

                        if enemigo.puntos_vida >= 0:

                            atacar(combatiente, enemigo)
                            enemigo.atacado = True
                        else:
                            seguir = muerte_1(self, enemigo)
                            if not seguir:
                                break

        if self.unidad_1.__name__ == "Orc":
            for combatiente in self.ejercito_1:
                enemigo = mas_cercano(combatiente, self.objetivos_2)

                if combatiente.__class__.__name__ == "Mascota" and self.no_mover_mascotas_1:
                    pass
                elif enemigo and not self.glaciar_en_proceso_2:
                    if enemigo.puntos_vida >= 0:

                        atacar(combatiente, enemigo)
                        enemigo.atacado = True
                    else:
                        seguir = muerte_1(self, enemigo)
                        if not seguir:
                            break

        if self.unidad_1.__name__ == "Skull":
            for combatiente in self.ejercito_1:
                enemigo = self.templo_2
                if combatiente.__class__.__name__ == "Mascota" and self.no_mover_mascotas_1:
                    pass

                else:
                    if combatiente.atacado == True:
                        enemigo = mas_cercano(combatiente, self.objetivos_2)
                    if enemigo and not self.glaciar_en_proceso_2:

                        if enemigo.puntos_vida >= 0:

                            atacar(combatiente, enemigo)
                            enemigo.atacado = True
                        else:
                            seguir = muerte_1(self, enemigo)
                            if not seguir:
                                break

        # ataque torres
        enemigo = mas_cercano(self.torreta_1, self.objetivos_2)
        if enemigo.puntos_vida >= 0:

            ataque_torreta(self.torreta_1, enemigo)
            enemigo.atacado = True
        else:
            muerte_1(self, enemigo)

        # ejercito 2

        if self.unidad_2.__name__ == "Human":

            for combatiente in self.ejercito_1:
                if combatiente.__class__.__name__ == "Mascota" and self.no_mover_mascotas_2:
                    pass
                if len(self.ejercito_2) >= 0.75 * len(
                        self.ejercito_1) or combatiente.atacado == True:
                    enemigo = mas_cercano(combatiente, self.objetivos_1)
                    if enemigo and self.glaciar_en_proceso_1 == False:

                        if enemigo.puntos_vida >= 0:

                            atacar(combatiente, enemigo)
                            enemigo.atacado = True
                        else:
                            seguir = muerte_2(self, enemigo)
                            if not seguir:
                                break

        if self.unidad_2.__name__ == "Orc":
            for combatiente in self.ejercito_1:
                enemigo = mas_cercano(combatiente, self.objetivos_1)
                if combatiente.__class__.__name__ == "Mascota" and self.no_mover_mascotas_2:
                    pass

                elif enemigo and self.glaciar_en_proceso_1 == False:
                    if enemigo.puntos_vida >= 0:

                        atacar(combatiente, enemigo)
                        enemigo.atacado = True
                    else:
                        seguir = muerte_2(self, enemigo)
                        if not seguir:
                            break

        if self.unidad_2.__name__ == "Skull":
            for combatiente in self.ejercito_2:
                enemigo = self.templo_1
                if combatiente.__class__.__name__ == "Mascota" and self.no_mover_mascotas_2:
                    pass

                else:
                    if combatiente.atacado == True:
                        enemigo = mas_cercano(combatiente, self.objetivos_1)
                    if enemigo and self.glaciar_en_proceso_1 == False:
                        if enemigo.puntos_vida >= 0:

                            atacar(combatiente, enemigo)
                            enemigo.atacado = True
                        else:
                            seguir = muerte_2(self, enemigo)
                            if not seguir:
                                break

        # ataque torres
        enemigo = mas_cercano(self.torreta_2, self.objetivos_1)
        if enemigo.puntos_vida >= 0:

            ataque_torreta(self.torreta_2, enemigo)
            enemigo.atacado = True
        else:
            muerte_2(self, enemigo)

        # ataque héroes

        if self.heroe_1_presente:
            if self.unidad_1.__name__ == "Orc":
                if not self.mascotas_orco_creadas_1:
                    mascota_1_gui = self.unidad_1(
                        "pet",
                        pos=(self.x_templo_1 + esparcir_x,
                             self.y_templo_1 + esparcir_y),
                        hp=35)
                    mascota_2_gui = self.unidad_1("pet",
                                                  pos=(self.x_templo_1 + 5,
                                                       self.y_templo_1 + 10),
                                                  hp=35)
                    gui.add_entity(mascota_1_gui)
                    gui.add_entity(mascota_2_gui)
                    mascota_1 = Mascota(
                        velocidad_mov=1.3 * self.modificador_velocidad_1,
                        puntos_vida=35 * self.modificador_vida_1,
                        puntos_daño=0.65 * self.modificador_daño_1,
                        rango=15,
                        gui=mascota_1_gui)
                    mascota_2 = Mascota(
                        velocidad_mov=1.3 * self.modificador_velocidad_1,
                        puntos_vida=35 * self.modificador_vida_1,
                        puntos_daño=0.65 * self.modificador_daño_1,
                        rango=15,
                        gui=mascota_2_gui)
                    self.lista_mascotas_1.append(mascota_1)

                    self.lista_mascotas_1.append(mascota_2)

                    self.mascotas_orco_creadas_1 = True

                enemigo = mas_cercano(self.hero_1, self.objetivos_2)
                if enemigo:
                    if enemigo.puntos_vida >= 0:

                        atacar(self.hero_1, enemigo)
                        enemigo.atacado = True
                    else:
                        muerte_1(self, enemigo)

            if self.unidad_1.__name__ == "Human":

                enemigo = mas_cercano(self.hero_1, self.objetivos_2)
                if enemigo:
                    if enemigo.puntos_vida >= 0:

                        ataque_cristian_1(self.hero_1, enemigo, self)
                        enemigo.atacado = True
                    else:
                        muerte_1(self, enemigo)

            if self.unidad_1.__name__ == "Skull":
                enemigo = mas_cercano(self.hero_1, self.objetivos_2)
                if enemigo:
                    if enemigo.puntos_vida >= 0:

                        atacar(self.hero_1, enemigo)
                        enemigo.atacado = True
                    else:
                        muerte_1(self, enemigo)

        # héroe ejército 2

        if self.heroe_2_presente:
            if self.unidad_2.__name__ == "Orc":
                if not self.mascotas_orco_creadas_1:
                    mascota_1_gui = self.unidad_2(
                        "pet",
                        pos=(self.x_templo_2 + esparcir_x,
                             self.y_templo_2 + esparcir_y),
                        hp=35)
                    mascota_2_gui = self.unidad_2(
                        "pet",
                        pos=(self.x_templo_2 + esparcir_x,
                             self.y_templo_2 + esparcir_y),
                        hp=35)
                    gui.add_entity(mascota_2_gui)
                    gui.add_entity(mascota_2_gui)
                    mascota_1 = Mascota(
                        velocidad_mov=1.3 * self.modificador_velocidad_2,
                        puntos_vida=35 * self.modificador_vida_2,
                        puntos_daño=0.65 * self.modificador_daño_2,
                        rango=15,
                        gui=mascota_1_gui)
                    mascota_2 = Mascota(
                        velocidad_mov=1.3 * self.modificador_velocidad_2,
                        puntos_vida=35 * self.modificador_vida_2,
                        puntos_daño=0.65 * self.modificador_daño_2,
                        rango=15,
                        gui=mascota_2_gui)
                    self.lista_mascotas_2.append(mascota_1)

                    self.lista_mascotas_2.append(mascota_2)

                    self.mascotas_orco_creadas_2 = True

                enemigo = mas_cercano(self.hero_2, self.objetivos_1)
                if enemigo:
                    if enemigo.puntos_vida >= 0:

                        atacar(self.hero_2, enemigo)
                        enemigo.atacado = True
                    else:
                        muerte_2(self, enemigo)

            if self.unidad_2.__name__ == "Human":
                enemigo = mas_cercano(self.hero_2, self.objetivos_1)
                if enemigo:
                    if enemigo.puntos_vida >= 0:

                        ataque_cristian_2(self.hero_2, enemigo, self)
                        enemigo.atacado = True
                    else:
                        muerte_2(self, enemigo)

            if self.unidad_2.__name__ == "Skull":

                enemigo = mas_cercano(self.hero_2, self.objetivos_1)
                if enemigo:
                    if enemigo.puntos_vida >= 0:

                        atacar(self.hero_2, enemigo)
                        enemigo.atacado = True
                    else:
                        muerte_2(self, enemigo)

        # los aldeanos muertos se eliminan de las listas
        eliminar_aldeanos(self)

        # se reconstruyen los edificios que no están en pie
        if self.torreta_1.en_pie == False:
            if self.torreta_1_pagada == False:
                self.gold_1 -= 150
                gui.set_gold_t1(self.gold_1)
                self.torreta_1_pagada = True
                self.estadisticas.oro_gastado_1 += 150

            construir_edificio_1(self, self.torreta_1)

        if self.torreta_2.en_pie == False:
            if self.torreta_2_pagada == False:
                self.gold_2 -= 150
                gui.set_gold_t2(self.gold_1)
                self.torreta_2_pagada = True
                self.estadisticas.oro_gastado_2 += 150

            construir_edificio_2(self, self.torreta_2)

        if self.cuartel_1.en_pie == False:
            if self.cuartel_1_pagado == False:
                self.gold_1 -= 100
                gui.set_gold_t1(self.gold_1)
                self.cuartel_1_pagado = True

            construir_edificio_1(self, self.cuartel_1)

        if self.cuartel_2.en_pie == False:
            if self.cuartel_1_pagado == False:
                self.gold_2 -= 100
                gui.set_gold_t2(self.gold_2)
                self.cuartel_2_pagado = True
                self.estadisticas.oro_gastado_2 += 100

            construir_edificio_2(self, self.cuartel_2)

        if self.cuartel_1.en_pie and self.torreta_1.en_pie:
            for aldeano in self.aldeanos_construyendo_1:
                self.aldeanos_ociosos_1.append(aldeano)
                self.aldeanos_construyendo_1.remove(aldeano)

        if self.cuartel_2.en_pie and self.torreta_2.en_pie:
            for aldeano in self.aldeanos_construyendo_2:
                self.aldeanos_ociosos_2.append(aldeano)
                self.aldeanos_construyendo_2.remove(aldeano)

        # para probar un poder:
        # glaciar_1(self)
        # terremoto_2(self)
        # etc

        # si se cumple el objetivo se ocupa el poder y se cambia el objetivo
        if self.cantidad_lograda_1 >= self.maximo_objetivo and not self.objetivo_logrado_2:

            if self.objetivo not in self.set_objetivos_logrados_1:
                self.set_objetivos_logrados_1.add(self.objetivo)
                self.objetivo_logrado_1 = True
                self.ocupar_poder_1 = True
                self.cambiar_objetivo = True
                self.estadisticas.poderes_usados_1 += 1

        if self.cantidad_lograda_2 >= self.maximo_objetivo and not self.objetivo_logrado_1:

            if self.objetivo not in self.set_objetivos_logrados_2:
                self.set_objetivos_logrados_2.add(self.objetivo)
                self.objetivo_logrado_2 = True
                self.ocupar_poder_2 = True
                self.cambiar_objetivo = True
                self.estadisticas.poderes_usados_2 += 1
        if self.cambiar_objetivo:
            self.objetivo_num = choice([1, 2, 3])
            self.objetivo = self.posibles_objetivos.get(self.objetivo_num)[0] + self.target.get(self.objetivo_num) + \
                            self.posibles_objetivos.get(self.objetivo_num)[1]
            gui.set_objective(self.objetivo)
            self.maximo_objetivo = int(self.target.get(self.objetivo_num))
            self.cambiar_objetivo = False
            self.cantidad_lograda_1 = 0
            self.cantidad_lograda_2 = 0

        if self.ocupar_poder_1:

            self.poder_1(self)
            if self.poder_en_proceso_1 == False:
                self.ocupar_poder_1 = False

        if self.ocupar_poder_2:

            self.poder_1(self)
            if self.poder_en_proceso_2 == False:
                self.ocupar_poder_2 = False

        if self.ticks_terremoto == self.max_terremotos:
            self.terremoto_en_proceso = False

        self.tiempo_sim += 0.025
Example #8
0
    def __init__(self, tiempo_max_sim, dios_1, raza_1, tasa_invocacion_1,
                 intervalo_1, dios_2, raza_2, tasa_invocacion_2, intervalo_2):

        self.tiempo_max_sim = tiempo_max_sim
        self.tiempo_sim = 0

        self.dios_1 = dios_1
        self.raza_1 = raza_1
        self.tasa_invocacion_1 = tasa_invocacion_1
        self.tiempo_heroe_1 = round(expovariate(tasa_invocacion_1 + 0.5))

        lista_intervalo_1 = intervalo_1.split(":")

        self.guerreros_ciclo_1 = int(lista_intervalo_1[0])
        self.arqueros_ciclo_1 = int(lista_intervalo_1[1])
        self.mascotas_ciclo_1 = int(lista_intervalo_1[2])

        self.dios_2 = dios_2
        self.raza_2 = raza_2
        self.tasa_invocacion_2 = tasa_invocacion_2
        self.tiempo_heroe_2 = round(expovariate(tasa_invocacion_2 + 0.5))

        lista_intervalo_2 = intervalo_2.split(":")

        self.guerreros_ciclo_2 = int(lista_intervalo_2[0])
        self.arqueros_ciclo_2 = int(lista_intervalo_2[1])
        self.mascotas_ciclo_2 = int(lista_intervalo_2[2])

        # objetivo

        self.unidad_objetivo = choice(["arqueros", "guerreros", "mascotas"])

        self.posibles_objetivos = {
            1: ("Recolectar ", "unidades de oro"),
            2: ("Eliminar", " " + self.unidad_objetivo),
            3: ("Crear ", " unidades")
        }

        self.target = {
            1: str(randint(200, 500)),
            2: str(randint(5, 10)),
            3: str(randint(5, 10))
        }

        self.objetivo_num = choice([1, 2, 3])

        self.objetivo = self.posibles_objetivos.get(self.objetivo_num)[0] + self.target.get(self.objetivo_num) + \
                        self.posibles_objetivos.get(self.objetivo_num)[1]

        gui.set_objective(self.objetivo)

        self.maximo_objetivo = int(self.target.get(self.objetivo_num))
        self.cantidad_lograda_1 = 0
        self.cantidad_lograda_2 = 0

        self.objetivo_logrado_1 = False
        self.objetivo_logrado_2 = False
        self.objetivo_alcanzado = False

        self.set_objetivos_logrados_1 = set()
        self.set_objetivos_logrados_2 = set()

        self.poder_1 = elegir_poder(1)

        self.poder_2 = elegir_poder(2, excluido=self.poder_1.__name__)

        # poderes

        self.ticks_plaga = 0
        self.plaga_en_proceso = False
        self.ticks_berserker = 0
        self.berserker_en_proceso = False
        self.duplicar_daño = True
        self.lista_unidades_muertas_1 = []
        self.lista_unidades_muertas_2 = []
        self.muertos_invocados = False
        self.ticks_glaciar = 0
        self.glaciar_en_proceso_1 = False
        self.glaciar_en_proceso_2 = False
        self.glaciar_terminado = False
        self.ticks_terremoto = 0
        self.max_terremotos = randint(120, 600)
        self.terremoto_en_proceso = False

        self.poder_en_proceso_1 = False
        self.poder_en_proceso_2 = False
        self.ocupar_poder_1 = False
        self.ocupar_poder_2 = False
        self.cambiar_objetivo = False

        self.unidad_1 = None
        self.unidad_2 = None

        self.max_tropas_1 = 0
        self.max_tropas_2 = 0

        # parámetros de heroes
        self.mascotas_orco_creadas_1 = False
        self.mascotas_orco_creadas_2 = False

        self.vidas_heroe_esqueleto = 3

        self.ticks_cristianizacion = 0

        if self.raza_1 == "humanos":
            self.unidad_1 = Human
            self.max_tropas_1 = 25

        if self.raza_2 == "humanos":
            self.unidad_2 = Human
            self.max_tropas_2 = 25

        if self.raza_1 == "orcos":
            self.unidad_1 = Orc
            self.max_tropas_1 = 20

        if self.raza_2 == "orcos":
            self.unidad_2 = Orc
            self.max_tropas_2 = 20

        if self.raza_1 == "muertos vivientes":
            self.unidad_1 = Skull
            self.max_tropas_1 = 30

        if self.raza_2 == "muertos vivientes":
            self.unidad_2 = Skull
            self.max_tropas_2 = 30

        self.modificador_daño_2 = 1
        self.modificador_velocidad_2 = 1
        self.modificador_vida_2 = 1

        if self.unidad_2.__name__ == "Orc":
            self.modificador_daño_2 = 1.2

        if self.unidad_2.__name__ == "Skull":
            self.modificador_vida_2 = 0.8
            self.modificador_velocidad_2 = 0.8

        self.modificador_daño_1 = 1
        self.modificador_velocidad_1 = 1
        self.modificador_vida_1 = 1
        if self.unidad_1.__name__ == "Orc":
            self.modificador_daño_1 = 1.2

        if self.unidad_1.__name__ == "Skull":
            self.modificador_vida_1 = 0.8
            self.modificador_velocidad_1 = 0.8

        self.lista_guerreros_1 = []
        self.lista_arqueros_1 = []
        self.lista_mascotas_1 = []

        self.lista_guerreros_2 = []
        self.lista_arqueros_2 = []
        self.lista_mascotas_2 = []

        # dioses
        self.no_mover_mascotas_1 = False
        self.no_mover_mascotas_2 = False

        self.pezoa_funcionando_1 = False
        self.pezoa_funcionando_1 = False

        self.rodolfo_funcionando_1 = False
        self.rodolfo_funcionando_1 = False

        self.jundead_funcionando_1 = False
        self.jundead_funcionando_1 = False

        efecto_pezoa(self)
        efecto_flo(self)
        efecto_godolfo(self)
        efecto_jundead(self)

        self.gold_1 = 800
        self.gold_2 = 800
        gui.set_gold_t1(self.gold_1)
        gui.set_gold_t2(self.gold_2)

        self.x_cuartel_1, self.y_cuartel_1 = 0, 0
        self.x_cuartel_2, self.y_cuartel_2 = 0, 0
        self.x_templo_1, self.y_templo_1 = 0, 0
        self.x_templo_2, self.y_templo_2 = 0, 0
        self.x_mina_1, self.y_mina_1 = 0, 0
        self.x_mina_2, self.y_mina_2 = 0, 0
        self.x_torreta_1, self.y_torreta_1 = 0, 0
        self.x_torreta_2, self.y_torreta_2 = 0, 0

        mapa_edificios = open("mapa.csv")

        primera_linea = mapa_edificios.readline().strip().split(",")

        indice_x = primera_linea.index("X")
        indice_y = primera_linea.index("Y")
        indice_tipo = primera_linea.index("TIPO")
        indice_ejercito = primera_linea.index("EJERCITO")

        for linea in mapa_edificios.readlines():
            lista_linea = linea.strip().split(",")

            if lista_linea[indice_tipo] == "Cuartel" and lista_linea[
                    indice_ejercito] == "1":
                self.x_cuartel_1 = int(lista_linea[indice_x])
                self.y_cuartel_1 = int(lista_linea[indice_y])

            if lista_linea[indice_tipo] == "Cuartel" and lista_linea[
                    indice_ejercito] == "2":
                self.x_cuartel_2 = int(lista_linea[indice_x])
                self.y_cuartel_2 = int(lista_linea[indice_y])

            if lista_linea[indice_tipo] == "Templo" and lista_linea[
                    indice_ejercito] == "1":
                self.x_templo_1 = int(lista_linea[indice_x])
                self.y_templo_1 = int(lista_linea[indice_y])

            if lista_linea[indice_tipo] == "Templo" and lista_linea[
                    indice_ejercito] == "2":
                self.x_templo_2 = int(lista_linea[indice_x])
                self.y_templo_2 = int(lista_linea[indice_y])

            if lista_linea[indice_tipo] == "Mina" and lista_linea[
                    indice_ejercito] == "1":
                self.x_mina_1 = int(lista_linea[indice_x])
                self.y_mina_1 = int(lista_linea[indice_y])

            if lista_linea[indice_tipo] == "Mina" and lista_linea[
                    indice_ejercito] == "2":
                self.x_mina_2 = int(lista_linea[indice_x])
                self.y_mina_2 = int(lista_linea[indice_y])

            if lista_linea[indice_tipo] == "Torreta" and lista_linea[
                    indice_ejercito] == "1":
                self.x_torreta_1 = int(lista_linea[indice_x])
                self.y_torreta_1 = int(lista_linea[indice_y])

            if lista_linea[indice_tipo] == "Torreta" and lista_linea[
                    indice_ejercito] == "2":
                self.x_torreta_2 = int(lista_linea[indice_x])
                self.y_torreta_2 = int(lista_linea[indice_y])

        # comenzamos con los cuatro edificios para cada raza

        self.templo_1_gui = Temple(self.dios_1,
                                   pos=(self.x_templo_1, self.y_templo_1),
                                   hp=1500)
        self.templo_2_gui = Temple(self.dios_2,
                                   pos=(self.x_templo_2, self.y_templo_2),
                                   hp=1500)
        self.mina_1_gui = Building("mine", pos=(self.x_mina_1, self.y_mina_1))
        self.mina_2_gui = Building("mine", pos=(self.x_mina_2, self.y_mina_2))
        self.cuartel_1_gui = Building("barracks",
                                      pos=(self.x_cuartel_1, self.y_cuartel_1),
                                      hp=1000)
        self.cuartel_2_gui = Building("barracks",
                                      pos=(self.x_cuartel_2, self.y_cuartel_2),
                                      hp=1000)
        self.torreta_1_gui = Building("tower",
                                      pos=(self.x_torreta_1, self.y_torreta_1),
                                      hp=500)
        self.torreta_2_gui = Building("tower",
                                      pos=(self.x_torreta_2, self.y_torreta_2),
                                      hp=500)

        self.templo_1 = Templo(puntos_vida=1500, gui=self.templo_1_gui)
        self.templo_2 = Templo(puntos_vida=1500, gui=self.templo_2_gui)
        self.mina_1 = Mina(puntos_vida=1, gui=self.mina_1_gui)
        self.mina_2 = Mina(puntos_vida=1, gui=self.mina_2_gui)
        self.cuartel_1 = Cuartel(puntos_vida=1000, gui=self.cuartel_1_gui)
        self.cuartel_2 = Cuartel(puntos_vida=1000, gui=self.cuartel_2_gui)
        self.torreta_1 = Torreta(puntos_vida=500,
                                 velocidad_ataque=1.2,
                                 puntos_daño=1,
                                 gui=self.torreta_1_gui,
                                 rango=160)
        self.torreta_2 = Torreta(puntos_vida=500,
                                 velocidad_ataque=1.2,
                                 puntos_daño=1,
                                 gui=self.torreta_2_gui,
                                 rango=160)

        gui.add_entity(self.templo_1.gui)
        gui.add_entity(self.templo_2.gui)
        gui.add_entity(self.mina_1.gui)
        gui.add_entity(self.mina_2.gui)
        gui.add_entity(self.cuartel_1.gui)
        gui.add_entity(self.cuartel_2.gui)
        gui.add_entity(self.torreta_1.gui)
        gui.add_entity(self.torreta_2.gui)

        torreta_construccion_gui_1 = Building("tower_construccion",
                                              pos=(self.x_torreta_1,
                                                   self.y_torreta_1),
                                              hp=500)
        torreta_construccion_gui_2 = Building("tower_construccion",
                                              pos=(self.x_torreta_2,
                                                   self.y_torreta_2),
                                              hp=500)
        cuartel_construccion_gui_1 = Building("barracks_construccion",
                                              pos=(self.x_cuartel_1,
                                                   self.y_cuartel_1),
                                              hp=1000)
        cuartel_construccion_gui_2 = Building("barracks_construccion",
                                              pos=(self.x_cuartel_2,
                                                   self.y_cuartel_2),
                                              hp=1000)

        gui.add_entity(torreta_construccion_gui_1)
        torreta_construccion_gui_1.hide()
        torreta_construccion_gui_1.health = 0
        gui.add_entity(torreta_construccion_gui_2)
        torreta_construccion_gui_2.hide()
        torreta_construccion_gui_2.health = 0
        gui.add_entity(cuartel_construccion_gui_1)
        cuartel_construccion_gui_1.hide()
        cuartel_construccion_gui_1.health = 0
        gui.add_entity(cuartel_construccion_gui_2)
        cuartel_construccion_gui_2.hide()
        cuartel_construccion_gui_2.health = 0

        self.cuartel_1.constru = cuartel_construccion_gui_1
        self.cuartel_2.constru = cuartel_construccion_gui_2
        self.torreta_1.constru = torreta_construccion_gui_1
        self.torreta_2.constru = torreta_construccion_gui_2

        # comenzamos con 5 aldeanos
        self.lista_aldeanos_total_1 = []
        self.lista_aldeanos_total_2 = []

        self.aldeanos_ociosos_1 = []
        self.aldeanos_ociosos_2 = []

        for i in range(5):
            esparcir_x = randint(0, 50)
            esparcir_y = randint(0, 100)

            aldeano_1_gui = self.unidad_1("villager",
                                          pos=(self.x_templo_1 + esparcir_x,
                                               self.y_templo_1 + esparcir_y),
                                          hp=25)
            aldeano_2_gui = self.unidad_2("villager",
                                          pos=(self.x_templo_2 + esparcir_x,
                                               self.y_templo_2 + esparcir_y),
                                          hp=25)

            gui.add_entity(aldeano_1_gui)
            gui.add_entity(aldeano_2_gui)

            aldeano_1 = Aldeano(25, 1, 1, 1, randint(0, 5), aldeano_1_gui)
            aldeano_2 = Aldeano(25, 1, 1, 1, randint(0, 5), aldeano_2_gui)

            self.aldeanos_ociosos_1.append(aldeano_1)
            self.aldeanos_ociosos_2.append(aldeano_2)
            self.lista_aldeanos_total_1.append(aldeano_1)
            self.lista_aldeanos_total_2.append(aldeano_2)

        self.aldeanos_recolectando_1 = []
        self.aldeanos_recolectando_2 = []

        self.aldeanos_construyendo_1 = []
        self.aldeanos_construyendo_2 = []

        self.aldeanos_trayendo_1 = []
        self.aldeanos_trayendo_2 = []

        self.hero_1 = None
        self.hero_2 = None

        self.heroe_1_presente = False
        self.heroe_2_presente = False

        self.estadisticas = Estadisticas()

        self.lista_aldeanos_eliminados_1 = []
        self.lista_aldeanos_eliminados_2 = []

        self.torreta_1_pagada = True
        self.torreta_2_pagada = True
        self.cuartel_1_pagado = True
        self.cuartel_2_pagado = True
Example #9
0
import math


gui.init()
human = Human(Human.COWARD, Human.NO_WEAPON, cord_x=100, cord_y=100)
human.add_decoration("gui/assets/bullet.png")
zombie = Zombie()
human.angle = 0
ticks = 0


def tick():
    human.cord_x += 1
    human.cord_y += 1
    human.angle += 1

zombies = []
for i in range(20):
    zombie = Zombie(cord_x=random.randint(0, 800), cord_y=random.randint(0, 800))
    gui.add_entity(zombie)
    zombies.append(zombie)


gui.add_entity(human)
gui.add_entity(zombie)
gui.add_entity(GunShopLong(100, 200))
gui.add_entity(GunShopShort(300, 300))
gui.add_entity(Building(300, 200))
gui.add_entity(Bullet(50, 50))
gui.run(tick, 50)
Example #10
0
 def disponer_ruletas(self):
     for j in [225, 300]:
         for i in range(100, 351, 50):
             ruleta = Ruleta(self, j, i)
             self.juegos.append(ruleta)
             gui.add_entity(ruleta)
Example #11
0
 def disponer_tragamonedas(self):
     for j in [75, 150]:
         for i in range(100, 351, 50):
             tragamon = Tragamonedas(self, j, i)
             self.juegos.append(tragamon)
             gui.add_entity(tragamon)
    var6 = Ruleta()
    main.list_ruletas.append(var6)
    lista_ruletas.append(var6)

for i in range(1, 4):
    var7 = Tragamonedas()
    main.list_tragamonedas.append(var7)
    lista_tragamonedas.append(var7)

for i in range(1, 4):
    var8 = Tarot()
    main.lista_tarot.append(var8)
    lista_tarot.append(var8)

for i in lista_ruletas:
    gui.add_entity(i)
    i.estado = False

for i in lista_tragamonedas:
    gui.add_entity(i)
    i.estado = False

for i in lista_tarot:
    gui.add_entity(i)
    i.estado = False

main.baño = baño
main.restobar = restobar
gui.add_entity(baño)
gui.add_entity(restobar)