def _init_tournament(teams, num_turns, fast): t = tournament.Tournament(teams, num_turns) band = False while not t.tournament_completed and not band: i = t.get_round_number() progress_bar = None if fast: progress_bar = pbs.ProgressBarDialog(None, _('Running the contest')) progress_bar_dialog = progress_bar.progress_bar_dialog progress_bar.set_num_elements(t.get_round(i).number_games) progress_bar_dialog.show() while gtk.events_pending(): gtk.main_iteration(False) t.play_round(progress_bar, fast) r = t.get_round(i) classifications = [] results = r.get_round_results() R = round_results.roundResults(classifications, results, t.get_prev_round_number() + 1, t.get_number_of_rounds(), show_classifications=False) if fast: progress_bar_dialog.hide() button_pressed = R.result_dialog.run() while gtk.events_pending(): gtk.main_iteration(False) if button_pressed == -4 or button_pressed == 0: band = True print teams
def _init_league(teams, fast, num_turns, back_round): l = league.League(teams, num_turns, back_round) band = False while not l.league_completed and not band: i = l.get_round_number() progress_bar = None if fast: progress_bar = pbs.ProgressBarDialog(None, _('Running the contest')) progress_bar_dialog = progress_bar.progress_bar_dialog progress_bar.set_num_elements(l.get_round(i).number_games) progress_bar_dialog.show() while gtk.events_pending(): gtk.main_iteration(False) l.play_round(progress_bar, fast) r = l.get_round(i) classifications = l.get_actual_puntuations() results = r.get_round_results() R = round_results.roundResults(classifications, results, l.get_prev_round_number() + 1, l.get_number_of_rounds()) if fast: progress_bar_dialog.hide() button_pressed = R.result_dialog.run() while gtk.events_pending(): gtk.main_iteration(False) if button_pressed == -4 or button_pressed == 0: band = True
def _init_game(game_type, teams, fast, num_turns, back_round = False, log_base_folder = None): logging.info(">>>> INIT GAME") if log_base_folder == None: log_base_folder = configure.load_configuration()['games_path'] + '/' # Generamos el nombre del fichero de log según el tipo de juego log_base_name = filenames.generate_filename(game_type, noExtension = True) log_folder_name = log_base_folder + log_base_name log_file_name = log_folder_name + "/" + game_type + ".txt" logging.info("Fichero de log: %s", log_file_name) logging.info("Carpeta de log: %s", log_folder_name) os.mkdir(log_folder_name) # Lanzamos el tipo de juego apropiado if game_type == 'cup': game = tournament.Tournament(teams, num_turns, log_folder = log_folder_name) else: game = league.League(teams, num_turns, back_round, log_folder = log_folder_name) band = False # Contenedor para clasificaciones classifications = {} results = None # Cada elemento tendrá una tupla de 3: ganadas, empatadas y perdidas estadisticas = {"aux_ghost_team": {"ganadas":0, "empatadas":0, "perdidas":0}} for equipo in contest.generate_key_names(teams).keys(): estadisticas[equipo] = {"ganadas":0, "empatadas":0, "perdidas":0}; # Mientras no se haya completado el juego while not game.completed() and not band and not controlPartida.flagCancelarCampeonato: logging.info("---- START OF THE ROUND") if results != None: # Cargamos el diálogo de resultados R = round_results.roundResults(classifications, results, game.get_prev_round_number() + 1, game.get_number_of_rounds(), show_classifications = (game_type != 'cup'), stats = estadisticas, show_top_teams = True, next_matches = game.matchs[game.get_round_number()]) # Mostramos el diálogo de resultados button_pressed = R.result_dialog.run() while gtk.events_pending(): gtk.main_iteration(False) if button_pressed == -4 or button_pressed == 0: band = True continue # Guardamos el número de la ronda roundNumber = game.get_round_number() if roundNumber == 0: show_round_matches(game) # Por defecto que la barra de progreso no exista progress_bar = None # Si no mostramos el progreso del juego, que salga la barra if fast: progress_bar = pbs.ProgressBarDialog(None, _('Running the contest')) progress_bar_dialog = progress_bar.progress_bar_dialog progress_bar.set_num_elements(game.get_round(roundNumber).number_games) progress_bar_dialog.show() while gtk.events_pending(): gtk.main_iteration(False) # Jugamos esta ronda game.play_round(progress_bar, fast) if controlPartida.flagCancelarCampeonato: return # Guardamos en r la ronda actual, con sus resultados y tal r = game.get_round(roundNumber) # Resultados de la ronda results = r.get_round_results() # Actualizamos el fichero del log update_log_round(log_file_name, results, roundNumber) for partido in results: if partido[1] == 1: estadisticas[partido[0][0]]["ganadas"] += 1 estadisticas[partido[0][1]]["perdidas"] += 1 elif partido[1] == -1: estadisticas[partido[0][1]]["ganadas"] += 1 estadisticas[partido[0][0]]["perdidas"] += 1 else: estadisticas[partido[0][0]]["empatadas"] += 1 estadisticas[partido[0][1]]["empatadas"] += 1 if game_type == 'cup': pass else: # "Puntuations" es una palabra que no existe classifications = game.get_actual_puntuations() # Ocultamos la barra de progreso (que ya habrá acabado) if fast: progress_bar_dialog.hide() logging.info("---- END OF THE ROUND") if not band: # Mostramos los resultados FINALES R = round_results.roundResults(classifications, results, game.get_prev_round_number() + 1, game.get_number_of_rounds(), show_classifications = (game_type != 'cup'), show_top_teams = True, stats = estadisticas) # Mostramos el diálogo de resultados button_pressed = R.result_dialog.run() while gtk.events_pending(): gtk.main_iteration(False) if not band and not controlPartida.flagCancelarCampeonato: if game_type == 'cup': update_log_ending_tournament(log_file_name, estadisticas) dibujoClasificacion = dibujo_clasificacion.DibujoClasificacion(game) else: update_log_ending_league(log_file_name, classifications) logging.info(">>>> END INIT GAME") return (band, classifications)
def _init_game(game_type, teams, fast, num_turns, back_round=False, log_base_folder=None): logging.info(">>>> INIT GAME") if log_base_folder == None: log_base_folder = configure.load_configuration()['games_path'] + '/' # Generamos el nombre del fichero de log según el tipo de juego log_base_name = filenames.generate_filename(game_type, noExtension=True) log_folder_name = log_base_folder + log_base_name log_file_name = log_folder_name + "/" + game_type + ".txt" logging.info("Fichero de log: %s", log_file_name) logging.info("Carpeta de log: %s", log_folder_name) os.mkdir(log_folder_name) # Lanzamos el tipo de juego apropiado if game_type == 'cup': game = tournament.Tournament(teams, num_turns, log_folder=log_folder_name) else: game = league.League(teams, num_turns, back_round, log_folder=log_folder_name) band = False # Contenedor para clasificaciones classifications = {} results = None # Cada elemento tendrá una tupla de 3: ganadas, empatadas y perdidas estadisticas = { "aux_ghost_team": { "ganadas": 0, "empatadas": 0, "perdidas": 0 } } for equipo in contest.generate_key_names(teams).keys(): estadisticas[equipo] = { "ganadas": 0, "empatadas": 0, "perdidas": 0 } # Mientras no se haya completado el juego while not game.completed( ) and not band and not controlPartida.flagCancelarCampeonato: logging.info("---- START OF THE ROUND") if results != None: # Cargamos el diálogo de resultados R = round_results.roundResults( classifications, results, game.get_prev_round_number() + 1, game.get_number_of_rounds(), show_classifications=(game_type != 'cup'), stats=estadisticas, show_top_teams=True, next_matches=game.matchs[game.get_round_number()]) # Mostramos el diálogo de resultados button_pressed = R.result_dialog.run() while gtk.events_pending(): gtk.main_iteration(False) if button_pressed == -4 or button_pressed == 0: band = True continue # Guardamos el número de la ronda roundNumber = game.get_round_number() if roundNumber == 0: show_round_matches(game) # Por defecto que la barra de progreso no exista progress_bar = None # Si no mostramos el progreso del juego, que salga la barra if fast: progress_bar = pbs.ProgressBarDialog(None, _('Running the contest')) progress_bar_dialog = progress_bar.progress_bar_dialog progress_bar.set_num_elements( game.get_round(roundNumber).number_games) progress_bar_dialog.show() while gtk.events_pending(): gtk.main_iteration(False) # Jugamos esta ronda game.play_round(progress_bar, fast) if controlPartida.flagCancelarCampeonato: return # Guardamos en r la ronda actual, con sus resultados y tal r = game.get_round(roundNumber) # Resultados de la ronda results = r.get_round_results() # Actualizamos el fichero del log update_log_round(log_file_name, results, roundNumber) for partido in results: if partido[1] == 1: estadisticas[partido[0][0]]["ganadas"] += 1 estadisticas[partido[0][1]]["perdidas"] += 1 elif partido[1] == -1: estadisticas[partido[0][1]]["ganadas"] += 1 estadisticas[partido[0][0]]["perdidas"] += 1 else: estadisticas[partido[0][0]]["empatadas"] += 1 estadisticas[partido[0][1]]["empatadas"] += 1 if game_type == 'cup': pass else: # "Puntuations" es una palabra que no existe classifications = game.get_actual_puntuations() # Ocultamos la barra de progreso (que ya habrá acabado) if fast: progress_bar_dialog.hide() logging.info("---- END OF THE ROUND") if not band: # Mostramos los resultados FINALES R = round_results.roundResults( classifications, results, game.get_prev_round_number() + 1, game.get_number_of_rounds(), show_classifications=(game_type != 'cup'), show_top_teams=True, stats=estadisticas) # Mostramos el diálogo de resultados button_pressed = R.result_dialog.run() while gtk.events_pending(): gtk.main_iteration(False) if not band and not controlPartida.flagCancelarCampeonato: if game_type == 'cup': update_log_ending_tournament(log_file_name, estadisticas) dibujoClasificacion = dibujo_clasificacion.DibujoClasificacion( game) else: update_log_ending_league(log_file_name, classifications) logging.info(">>>> END INIT GAME") return (band, classifications)