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")
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)
def testun_elemento(self): resultado = Lang.enumerar(["hola"]) self.assertEqual(resultado, "hola", "El resulado no es el esperado para un elemento")
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")
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")
def testdos_elemntos(self): resultado = Lang.enumerar(["hola", "lol"]) self.assertEqual(resultado, "hola y lol", "El resulado no es el esperado para dos elementos")