コード例 #1
0
def obtener_informacion_1():
    """ Obtenemos la informacion necesaria de los chivatos, los cuales
    nos daran los datos de los maleantes que ellos conozcan."""

    if (ClassUtils.isEmpty(info)):
        return False
    else:
        # Obtenemos el Chivato mas cercano
        chivato_cercano = ClassUtils.getCercano(info)
        if (chivato_cercano == None):
            return False

        Logger.log("El chivato mas cercano es: " + str(chivato_cercano))
        # Eliminamos el chivato de la lista total de Chivatos.
        del info[chivato_cercano]

        boolean_info = obtener_informacion_2(chivato_cercano)
        if (boolean_info == False):
            obtener_informacion_1()
        else:
            return True
コード例 #2
0
def localizar_chivatos(chivatos, cazarecompensas):
    """Devuelve un mapa de la localizacion de los chivatos
    como key   -> el nombre del chivato
    como valor -> la distancia"""

    info_chivato = {}
    for c in chivatos:
        chivato = c
        distancia = ClassUtils.getDistancia(chivato, cazarecompensas.localizacion)
        info_chivato.update({chivato : distancia})
        #print(info_chivato)
    return info_chivato
コード例 #3
0
def get_horario():
    """Metodo principal para obtener el resultado del ejercicio, el horario"""

    # Para obtener informacion de los maleantes, lo primero es atrapar un chivato y obtener su informacion.
    global info
    info = Chivato.localizar_chivatos(lista_total_chivatos, cazarecompensas)

    obtener_informacion_1()
    Logger.log('Informacion obtenida: ' + str(info))


    # Mientras no tengamos informacion, consultamos al siguiente chivato
    while ((ClassUtils.isEmpty(cazarecompensas.list_info) == True) and (ClassUtils.isEmpty(info) == False)):
        obtener_informacion_1()
        Logger.log('Informacion obtenida: ' + str(info))

    # Recorrer los maleantes con la informacion obtenida, mientras exista informacion y haya tiempo
    while (ClassUtils.isEmpty(cazarecompensas.list_info) == False and (getTime() > 0)):

        # Buscamos al Maleante mas cercano, de la lista de informacion
        villano = ClassUtils.getCercanoMaleante(cazarecompensas.list_info, cazarecompensas)
        Logger.log("Villano mas cercano: " + str(villano.nombre))

        # Si no se puede atrapar, salimos de la iteracion y obtenemos el informe final
        seguir = atrapar_maleante(villano)
        if (seguir == False):
            return

        # Si la lista con informacion del Cazarecompensas esta vacia, buscamos a otro chivato.
        if (ClassUtils.isEmpty(cazarecompensas.list_info) and
                (not ClassUtils.isEmpty(lista_total_maleantes))):
            obtener_informacion_1()

    Logger.log("Generar informe final")
    generarInforme()
コード例 #4
0
def atrapar_maleante(maleante):
    """Metodo que situa al Cazarecompensas en la localizacion del chivato"""

    # Obtenemos la distancia al maleante pasado como parametro
    distancia = ClassUtils.getDistancia(maleante, cazarecompensas.localizacion)

    # Si hay, tiempo se le da caza, si no se finaliza la caza y se genera el informe.
    if ((getTime() - distancia) < 0):
        return False
    else:
        setTime(distancia)
        cazarecompensas.localizacion = maleante.localizacion

        # Se captura al maleante, se le quita la vida.
        captura = capturarMaleante(maleante)
        if (captura == False):
            return False

        # Finalmente se genera un nuevo informe con los datos de la caza
        nuevo_informe(getTime(), maleante.nombre, maleante.localizacion, maleante.recompensa)
        cazarecompensas.list_info.remove(maleante)
        lista_total_maleantes.remove(maleante)

        return True
コード例 #5
0
def atrapar_chivato(chivato):
    """Metodo que situa al Cazarecompensas en la localizacion del chivato y obtiene su informacion."""

    # Calcula la distancia entre el Cararecompensas y el chivato
    distancia = ClassUtils.getDistancia(chivato, cazarecompensas.localizacion)
    Logger.log("Distancia al chivato mas cercano es: " + str(distancia))

    # Si aun hay tiempo, le da caza para obtener su informacion(solo en caso de que no sea a su vez Maleante)
    if ((getTime() - distancia) < 0):
        info = {}
        return False
    else:
        setTime(distancia)
        lista_total_chivatos.remove(chivato)
        cazarecompensas.localizacion = chivato.localizacion
        Logger.log("La nueva localizacion del Cazarecompensas es: " + str(cazarecompensas.localizacion))

        # Se genera un nuevo informe registrando la informacion de la caza
        nuevo_informe(getTime(), chivato.nombre, chivato.localizacion, 0)
        if (chivato.isMaleante == False):
            setList(chivato.list_maleantes, cazarecompensas.list_info)
            return True

        return False