Пример #1
0
    def _iniciar_anuncios(self, bot, job):
        """Lanza los mensajes cuando todo el mundo despierda, anuncia los muertos."""

        partida = job.context["partida"]
        chat = job.context["chat"]

        # Seleccionamos el mensaje apropiado para la cantidad de muertos
        # TODO: el mensaje contiene una lista de los jugadores
        if len(partida.esta_noche_muere) > 1:
            text = Lang.get_text_inserted(
                "amanece_plural",
                nombres_y_personajes=Lang.enumerar([
                    "%s (%s)" %
                    (jugador.nombre_completo, jugador.personaje.nombre)
                    for jugador in partida.esta_noche_muere
                ]))
        elif partida.esta_noche_muere:
            text = Lang.get_text_inserted(
                "amanece_singular",
                nombre=partida.esta_noche_muere[0].nombre_completo,
                personaje=partida.esta_noche_muere[0].personaje.nombre)
        else:
            text = Lang.get_text("amanece_ninguno")

        # Marcamos a los muertos y reiniciamos la lista
        for jugador in partida.esta_noche_muere:
            jugador.personaje.vivo = False
        partida.esta_noche_muere = []

        # Enviamos el mensaje
        bot.send_message(chat_id=chat.id,
                         text=text,
                         parse_mode="Markdown",
                         disable_web_page_preview=True)

        # TODO: ejecutar esto en un método a parte
        # Decimos a la vidente qué ha visto
        for jugador in partida.jugadores:
            if jugador.personaje.nombre == "La Vidente":
                if jugador.personaje.esta_noche_ha_visto_a:
                    bot.send_message(
                        jugador.id,
                        Lang.get_text_inserted(
                            "vidente_ha_visto",
                            objetivo=jugador.personaje.esta_noche_ha_visto_a.
                            nombre_completo,
                            objetivo_personaje=jugador.personaje.nombre))
                    jugador.personaje.esta_noche_ha_visto_a = None
                # Solo hay una vidente
                break

        victoria = partida.comprobar_victoria()
        if victoria:
            bot.send_message(chat.id, "Han ganado %s" % victoria)

        if DEBUGGING:
            bot.send_message(
                chat_id=job.context["chat"].id,
                text="lOS ANUNCIOS se ha inciado correctamente lol")
Пример #2
0
    def _finalizar_votacion_de_linchamiento(self, bot, job):
        """Contamos los votos y se lincha al más votado :)"""

        partida = job.context["partida"]
        chat = job.context["chat"]
        partida.linchando = False

        # Contamos los votos
        votos = []
        for jugador in partida.jugadores:
            if jugador.personaje.hoy_ha_votado_a:
                votos.append(jugador.personaje.hoy_ha_votado_a)
                jugador.personaje.hoy_ha_votado_a = None

        # Comprobamos si ha votado al menos la mitad de los ciudadanos
        if votos.count(None) > len(votos) // 2:
            bot.send_message(
                chat_id=chat.id,
                text=Lang.get_text("fin_linchamiento_insuficientes_votos"))
            return

        # Hacemos el recuento
        recuento = list(set([(n, v) for v in votos for n in [votos.count(v)]]))
        recuento.sort(reverse=True)

        # Comprobamos si hay un empate
        if recuento.__len__() > 1 and recuento[1][0] == recuento[0][0]:
            mas_votado = None
        else:
            mas_votado = recuento[0][1]

        # Decimos quién es el linchado, si no hay mas_votado es un empate.
        if mas_votado:
            mas_votado.personaje.vivo = False
            bot.send_message(chat_id=chat.id,
                             text=Lang.get_text_inserted(
                                 "fin_linchamiento",
                                 linchado=mas_votado.nombre_completo))
        else:
            empates = []
            for recuento_voto in recuento:
                if recuento_voto[0] == recuento[0][0]:
                    empates.append(recuento_voto[1].nombre_completo)
                else:
                    break

            bot.send_message(chat_id=chat.id,
                             text=Lang.get_text_inserted(
                                 "fin_linchamiento_empate",
                                 empates=Lang.enumerar(empates)))

        # Comprobamos si algun bando ha ganado
        victoria = partida.comprobar_victoria()
        if victoria:
            bot.send_message(chat.id, "Han ganado %s" % victoria)
Пример #3
0
    def testun_elemento(self):

        resultado = Lang.enumerar(["hola"])
        self.assertEqual(resultado, "hola",
                         "El resulado no es el esperado para un elemento")
Пример #4
0
    def testcuatro_elementos(self):

        resultado = Lang.enumerar(["hola", "lol", "no", "creo"])
        self.assertEqual(
            resultado, "hola, lol, no y creo",
            "El resulado no es el esperado para cuatro elementos")
Пример #5
0
    def testtres_elementos(self):

        resultado = Lang.enumerar(["hola", "lol", "no"])
        self.assertEqual(resultado, "hola, lol y no",
                         "El resulado no es el esperado para tres elementos")
Пример #6
0
    def testdos_elemntos(self):

        resultado = Lang.enumerar(["hola", "lol"])
        self.assertEqual(resultado, "hola y lol",
                         "El resulado no es el esperado para dos elementos")