Beispiel #1
0
def construir_edificio_2(simul, edificio):
    obreros_ya_construyendo = []

    for aldeano in simul.aldeanos_construyendo_2:
        if distancia(aldeano, edificio) <= 5:
            obreros_ya_construyendo.append(aldeano)

        else:
            mover(aldeano, edificio)

    for aldeano in obreros_ya_construyendo:
        empieza_construir(aldeano, edificio, simul.aldeanos_ociosos_2)

    obreros_necesarios = edificio.unidades_para_construir - len(
        simul.aldeanos_construyendo_2)

    obreros_desocupados = simul.aldeanos_ociosos_2 + \
                          simul.aldeanos_recolectando_2 + \
                          simul.aldeanos_trayendo_2

    if len(obreros_desocupados) > obreros_necesarios:
        for i in range(obreros_necesarios):
            trabajador = obreros_desocupados[i]
            simul.aldeanos_construyendo_2.append(trabajador)
            if trabajador in simul.aldeanos_recolectando_2:
                simul.aldeanos_recolectando_2.remove(trabajador)
            if trabajador in simul.aldeanos_ociosos_2:
                simul.aldeanos_ociosos_2.remove(trabajador)

            if trabajador in simul.aldeanos_trayendo_2:
                simul.aldeanos_trayendo_2.remove(trabajador)
Beispiel #2
0
def ataque_torreta(torreta, enemigo):
    dist = distancia(torreta, enemigo)
    rango = torreta.rango

    if dist <= rango:
        enemigo.puntos_vida -= torreta.puntos_daño * torreta.velocidad_ataque
        enemigo.gui.health -= torreta.puntos_daño * torreta.velocidad_ataque
Beispiel #3
0
def ataque_cristian_2(unidad_1, unidad_2, simul):
    if unidad_2.__class__.__name__ == "Hero":
        atacar(unidad_1, unidad_2)

    else:

        dist = distancia(unidad_1, unidad_2)
        rango_maximo = unidad_1.rango

        if dist > rango_maximo:
            mover(unidad_1, unidad_2)

        else:

            simul.ticks_cristianizacion += 1
            if simul.ticks_cristianizacion == 80:
                if unidad_2.__class__.__name__ == "Guerrero":
                    simul.lista_guerreros_1.remove(unidad_2)
                    simul.lista_guerreros_2.append(unidad_2)
                if unidad_2.__class__.__name__ == "Arquero":
                    simul.lista_arqueros_1.remove(unidad_2)
                    simul.lista_arqueros_2.append(unidad_2)
                if unidad_2.__class__.__name__ == "Mascota":
                    simul.lista_mascotas_1.remove(unidad_2)
                    simul.lista_mascotas_2.append(unidad_2)

                simul.ticks_cristianizacion = 0
Beispiel #4
0
def atacar(unidad_1, unidad_2):
    dist = distancia(unidad_1, unidad_2)
    rango_maximo = unidad_1.rango if unidad_1.__class__.__name__ == "Arquero" \
        else 5
    if dist > rango_maximo:

        mover(unidad_1, unidad_2)



    else:

        unidad_2.puntos_vida -= unidad_1.puntos_daño
        unidad_2.gui.health -= unidad_1.puntos_daño
Beispiel #5
0
def mas_cercano(unidad, lista_enemigos):
    nemesis = None
    distancia_nemesis = 100000
    if lista_enemigos:
        nemesis = lista_enemigos[0]

        for enemigo in lista_enemigos:
            if enemigo:
                distancia_analizada = distancia(unidad, enemigo)
                if distancia_analizada < distancia_nemesis:
                    nemesis = enemigo
                    distancia_nemesis = distancia_analizada

    return nemesis
Beispiel #6
0
 def test_distancia(self):
     self.assertEqual(distancia(self.arquero, self.guerrero), 1)