Exemple #1
0
def count_points(bot, game):
    frase_elegida = game.board.state.ordered_votes[
        game.board.state.index_pick_resp]
    jugador_favorecido = frase_elegida.player

    mensaje = "La frase elegida fue: *{0}* de {1}! El cual gana 1 punto!".format(
        frase_elegida.content['propuesta'],
        helper.player_call(jugador_favorecido))
    jugador_favorecido.puntaje += 1

    votos_a_respuesta_elegida = [
        (val[0], val[1], val[2])
        for index, val in enumerate(game.board.state.votes_on_votes)
        if val[2] == game.board.state.index_pick_resp
    ]
    mensaje += "\nA su vez los jugadores que votaron la frase:\n" if len(
        votos_a_respuesta_elegida) else "\nNingun jugador voto la frase"
    votos_dif_jugadores = []

    for voto in votos_a_respuesta_elegida:
        player = voto[0]
        player.puntaje += voto[1]
        if player.uid not in votos_dif_jugadores and len(
                votos_dif_jugadores) < 3:
            votos_dif_jugadores.append(player.uid)
        mensaje += "{name} gano {puntos} punto\n".format(name=player.name,
                                                         puntos=voto[1])
    game.board.state.active_player.puntaje += len(votos_dif_jugadores)

    mensaje += "El jugador activo ha ganado *{}* por los votos de diferentes jugadores (MAX 3)".format(
        len(votos_dif_jugadores)) if len(votos_dif_jugadores) > 0 else ""
    bot.send_message(game.cid, mensaje, ParseMode.MARKDOWN)
    #Commands.save(bot, game.cid)
    start_next_round(bot, game)
Exemple #2
0
def command_jugadores(bot, update):
    uid = update.message.from_user.id
    cid = update.message.chat_id

    game = get_game(cid)
    jugadoresActuales = "Los jugadores que se han unido al momento son:\n"
    for uid in game.playerlist:
        jugadoresActuales += "{}\n".format(
            helper.player_call(game.playerlist[uid]))

    bot.send_message(game.cid, jugadoresActuales, ParseMode.MARKDOWN)
Exemple #3
0
def get_respuestas(bot, game):
    text = ""
    i = 1

    for vote in game.board.state.ordered_votes:
        text += "*{1}: {0}*\n".format(vote.content['propuesta'], i)
        i += 1
    respuestas = "Las respuestas son:\n{}".format(text)
    return "{0} es hora de elegir! Elige con /pick NUMERO (En privado)\n*{1}*\n{2}\n".format(
        helper.player_call(game.board.state.active_player),
        game.board.state.acciones_carta_actual, respuestas)
Exemple #4
0
def command_call(bot, game):
    try:
        # Verifico en mi maquina de estados que comando deberia usar para el estado(fase) actual
        if game.board.state.fase_actual == "Proponiendo Pistas":
            call_proponiendo_pistas(bot, game)
        elif game.board.state.fase_actual == "Revisando Pistas":
            reviewer_player = game.board.state.reviewer_player
            bot.send_message(
                game.cid,
                "Revisor {0} recorda que tenes que verificar las pistas".
                format(helper.player_call(reviewer_player)),
                ParseMode.MARKDOWN)
        elif game.board.state.fase_actual == "Adivinando":
            active_player = game.board.state.active_player
            bot.send_message(
                game.cid,
                "{0} estamos esperando para que hagas /guess EJEMPLO o /pass".
                format(helper.player_call(active_player)), ParseMode.MARKDOWN)
    except Exception as e:
        bot.send_message(game.cid, str(e))
Exemple #5
0
def call_to_vote_respeustas(bot, game):
    call_text = 'Recuerden votar\n'
    for player in game.player_sequence:
        if verify_missing_votes_user(game, player.uid):
            lista_votos_usuario = [
                (index, val[2])
                for index, val in enumerate(game.board.state.votes_on_votes)
                if val[0].uid == player.uid
            ]
            call_text += 'Te faltan *{0}* votos {1}.\n'.format(
                2 - len(lista_votos_usuario), helper.player_call(player))
    bot.send_message(game.cid, call_text, ParseMode.MARKDOWN)
Exemple #6
0
def myturn_message(game, uid):
    try:
        group_link_name = helper.gname(game)
        #group_link_name = game.groupName if get_config_data(game, "link")==None else "[{0}]({1})".format(game.groupName, get_config_data(game, "link"))
        #if uid == ADMIN[0]:
        #	group_link_name = "[{0}]({1})".format(game.groupName, get_config_data(game, "link"))
        # Verifico en mi maquina de estados que comando deberia usar para el estado(fase) actual
        if game.board.state.fase_actual == "Proponiendo Pistas":
            mensaje_clue_ejemplo = "/resp Ejemplo" if game.board.num_players != 3 else "/resp Ejemplo Ejemplo2"
            return "Partida: {1} debes dar {3} para la palabra: *{2}*.\nAdivina el jugador *{4}*".format(
                helper.player_call(game.playerlist[uid]), group_link_name,
                game.board.state.acciones_carta_actual, mensaje_clue_ejemplo,
                game.board.state.active_player.name)
        elif game.board.state.fase_actual == "Revisando Pistas":
            reviewer_player = game.board.state.reviewer_player
            return "Partida: {1} Revisor recorda que tenes que verificar las pistas".format(
                helper.player_call(reviewer_player), group_link_name)
        elif game.board.state.fase_actual == "Adivinando":
            active_player = game.board.state.active_player
            return "Partida: {1} estamos esperando para que hagas /guess EJEMPLO o /pass".format(
                helper.player_call(active_player), group_link_name)
    except Exception as e:
        return str(e)
Exemple #7
0
def command_continue(bot, game, uid):
    try:

        # Verifico en mi maquina de estados que comando deberia usar para el estado(fase) actual
        if game.board.state.fase_actual == "Proponiendo Pistas":
            # Vuelvo a mandar la pista
            SayAnythingController.call_players_to_clue(bot, game)
        elif game.board.state.fase_actual == "Revisando Pistas":
            SayAnythingController.review_clues(bot, game)
        elif game.board.state.fase_actual == "Adivinando":
            active_player = game.board.state.active_player
            bot.send_message(
                game.cid,
                "{0} estamos esperando para que hagas /guess EJEMPLO o /pass".
                format(helper.player_call(active_player)), ParseMode.MARKDOWN)
        elif game.board.state.fase_actual == "Finalizado":
            SayAnythingController.continue_playing(bot, game)
    except Exception as e:
        bot.send_message(game.cid, str(e))
Exemple #8
0
def command_guess(bot, update, args):
    try:
        log.info('command_guess called')
        #Send message of executing command
        cid = update.message.chat_id
        uid = update.message.from_user.id
        game = Commands.get_game(cid)
        if (len(args) < 1 or game.board.state.fase_actual != "Adivinando"
                or uid !=
                game.board.state.active_player.uid):  # and uid not in ADMIN:
            bot.send_message(
                game.cid,
                "No es el momento de adivinar, no eres el que tiene que adivinar o no has ingresado algo para adivinar",
                ParseMode.MARKDOWN)
            return
        args_text = ' '.join(args)

        if args_text.lower() == game.board.state.acciones_carta_actual.lower():
            #Adivino correctamente! Aumento el puntaje
            game.board.state.progreso += 1
            bot.send_message(game.cid, "*CORRECTO!!!*", ParseMode.MARKDOWN)
            game.board.discards.append(game.board.state.acciones_carta_actual)
            JustOneController.start_next_round(bot, game)
        else:
            #Preguntar al revisor
            mensaje = "*Revisor* {0} confirme por favor!".format(
                helper.player_call(game.board.state.reviewer_player))
            bot.send_message(game.cid, mensaje, ParseMode.MARKDOWN)
            chat_donde_se_pregunta = uid
            opciones_botones = {"correcto": "Si", "incorrecto": "No"}
            helper.simple_choose_buttons(
                bot, cid, game.board.state.reviewer_player.uid,
                game.board.state.reviewer_player.uid, "reviewerconfirm",
                "¿Es correcto lo que se adivinó ({1})? Palabra: {0}".format(
                    game.board.state.acciones_carta_actual,
                    args_text), opciones_botones)

    except Exception as e:
        bot.send_message(uid, str(e))
        log.error("Unknown error: " + str(e))
Exemple #9
0
def call_proponiendo_pistas(bot, game):
    if not game.dateinitvote:
        # If date of init vote is null, then the voting didnt start
        bot.send_message(game.cid, "No es momento de dar pista.")
    else:
        #If there is a time, compare it and send history of votes.
        start = game.dateinitvote
        stop = datetime.datetime.now()
        elapsed = stop - start
        if elapsed > datetime.timedelta(minutes=1):
            # Only remember to vote to players that are still in the game
            history_text = ""
            for player in game.player_sequence:
                # If the player is not in ordered_votes send him reminder
                voto_jugador = next((x for x in game.board.state.ordered_votes
                                     if x.player.uid == player.uid), None)
                if not voto_jugador and player.uid != game.board.state.active_player.uid:
                    history_text += "Tienes que dar una respuesta {0}.\n".format(
                        helper.player_call(player))
                    # Envio mensaje inicial de pistas para recordarle al jugador la pista y el grupo
                    mensaje = "Palabra en el grupo *{1}*.\nJugador activo: *{2}*\nLa frase es: *{0}*, propone tu respuesta!".format(
                        game.board.state.acciones_carta_actual, game.groupName,
                        game.board.state.active_player.name)
                    bot.send_message(player.uid, mensaje, ParseMode.MARKDOWN)
                    mensaje = "/resp Ejemplo" if game.board.num_players != 3 else "/prop Ejemplo Ejemplo2"
                    bot.send_message(player.uid, mensaje)
            bot.send_message(game.cid, history_text, ParseMode.MARKDOWN)
            if game.board.num_players != 3 and len(
                    game.board.state.ordered_votes) == len(
                        game.player_sequence) - 1:
                SayAnythingController.send_prop(bot, game)
            elif len(game.board.state.ordered_votes) == len(
                    game.player_sequence) + 1:
                # De a 3 jugadores exigo que pongan 2 pistas cada uno son 4 de a 3 jugadores
                SayAnythingController.send_prop(bot, game)
        else:
            bot.send_message(game.cid,
                             "5 minutos deben pasar para llamar a call")