diff --git a/controllers/base.py b/controllers/base.py index 9205657..d1d1b0d 100644 --- a/controllers/base.py +++ b/controllers/base.py @@ -1,7 +1,5 @@ -from ChessTournament.models.models import (Player, Round, Match, - MatchHistory) -from ChessTournament.models.models import DATAPATH, PLAYERFILE, TOURNAMENTFILE - +from models.models import (Player, Round, Match, MatchHistory) +from models.models import DATAPATH, PLAYERFILE, TOURNAMENTFILE from random import shuffle import os @@ -63,8 +61,6 @@ class Save: data = { tournament.name: tournament.data() } - print(data) - if self.load_file(TOURNAMENTFILE): data_tmp = self.load_file(TOURNAMENTFILE) data_tmp[tournament.name] = tournament.data() @@ -109,13 +105,12 @@ class Application: self.tournament.players_list = self.save.player_load() self.save.tournament_write(self.tournament) else: - print("Placez un fichier joueur dans le répertoire data" - "ou créez des nouveaux joueurs depuis le menu") - print() + self.view.display_player_instructions() self.menu_manager() def run_tournament(self): shuffle(self.tournament.players_list) + self.view.display_players(self.tournament.players_list) for each_round in range(1, self.tournament.total_round + 1): self.tournament.current_round += 1 self.round = Round() @@ -125,6 +120,7 @@ class Application: self.round.start_time = self.round.get_time() # create matches TODO : check from history self.round.match_list = self.create_match() + self.match_history.add(self.round.match_list) # display matches self.view.display_matches(self.round.match_list) self.view.prompt_for_scores() @@ -132,7 +128,6 @@ class Application: self.scores(self.round.match_list) self.sort_by_score() self.tournament.round_list.append(self.round.save()) - print("après maj", self.tournament.round_list) self.save.tournament_write(self.tournament) self.view.display_round_info(self.round) self.view.display_scores(self.tournament.players_list) @@ -163,9 +158,15 @@ class Application: for i in range(0, len(self.tournament.players_list), 2): j += 1 match = Match() - match.player1 = self.tournament.players_list[i] - match.player2 = self.tournament.players_list[i+1] - match_list.append(match) + try: + match.player1 = self.tournament.players_list[i] + match.player2 = self.tournament.players_list[i+1] + if self.match_history.check(match): + # match.player2 = self.tournament.players_list[i+2] + print("deja joue") + match_list.append(match) + except IndexError: + pass return match_list def scores(self, match_list) -> list: @@ -197,7 +198,7 @@ class Application: # Quit if menu_choice == "4": print("Bye") - + break # Rapports elif menu_choice == "3": rapport_choice = self.menu.items(2) @@ -243,23 +244,4 @@ class Application: print("c'est parti") self.create_tournament() self.run_tournament() - self.view.display_winner(self.tournament.players_list) - self.view.display_scores(self.tournament.players_list) self.menu_manager() - - -class CheckMatch: - pass - - -class MenuManager: - pass - - -class TournamentManager: - def __init__(self): - pass - - -class UserManager: - pass diff --git a/models/models.py b/models/models.py index c6f93dc..ebb8037 100644 --- a/models/models.py +++ b/models/models.py @@ -22,6 +22,7 @@ class Tournament: self.round_list = [] self.current_round = 0 self.players_list = players_list + self.scores = [] self.description = "Pas de description" def __str__(self): @@ -67,7 +68,8 @@ class Player: 'prénom': self.name, 'nom': self.lastname, 'date de naissance': self.birthdate, - 'ine': self.ine + 'ine': self.ine, + 'score': self.score } return player_dict diff --git a/views/base.py b/views/base.py index 70fb14f..85c5c6f 100644 --- a/views/base.py +++ b/views/base.py @@ -34,23 +34,6 @@ class View: input(f"Prêt à lancer le {round.name} ? (y)") return True - def display_matches(self, match_list): - print("Liste des matchs : ") - for match in match_list: - print(match.player1.name, match.player1.lastname.upper(), - "contre", match.player2.name, match.player2.lastname.upper(), - "(", match, ")" - ) - - def display_round_info(self, round): - print("\n -> ", round) - - def display_scores(self, players_list): - print("\nLes scores sont :") - print("-----------------") - for i in players_list: - print(i.ine, i.name, i.lastname, ":", i.score) - def prompt_for_new_player(self) -> dict: print("Enregistrez un nouveau joueur :\n") lastname = input("Nom de famille ? : ") @@ -77,6 +60,16 @@ class View: tournament_details['total_round'] = int(total_round) return tournament_details + def prompt_tournament_to_display(self, tournament_list_to_display): + i = 0 + temp_list = [] + for tournament in tournament_list_to_display: + i += 1 + print(i, ".", tournament) + temp_list.append(tournament) + num = int(input("Numéro du tournoi à afficher ? ")) + return temp_list[num - 1] + def input_scores(self, match, count): print("Scores pour le match", count, " :") while True: @@ -91,13 +84,22 @@ class View: except ValueError: print("Veuillez entrer un chiffre") - def display_winner(self, player_list): - winner = max(player_list, key=lambda t: t.score) - print("Le gagnant est :", - winner.name, - winner.lastname, - "avec un score de :", - winner.score) + def display_matches(self, match_list): + print("Liste des matchs : ") + for match in match_list: + print(match.player1.name, match.player1.lastname.upper(), + "contre", match.player2.name, match.player2.lastname.upper(), + "(", match, ")" + ) + + def display_round_info(self, round): + print("\n -> ", round) + + def display_scores(self, players_list): + print("\nLes scores sont :") + print("-----------------") + for i in players_list: + print(i.ine, ':', i.name, i.lastname, i.score) def display_players(self, player_list_to_display): print("Liste des joueurs :") @@ -111,23 +113,16 @@ class View: "le", tournament_list_to_display[tournament]['start']) - def prompt_tournament_to_display(self, tournament_list_to_display): - i = 0 - temp_list = [] - for tournament in tournament_list_to_display: - i += 1 - print(i, ".", tournament) - temp_list.append(tournament) - num = int(input("Numéro du tournoi à afficher ? ")) - return temp_list[num - 1] - def display_tournament_detail(self, tournament_to_display): i = tournament_to_display print("Nom du tournoi : ", i['name']) print("Lieu : ", i['location']) + print("Description : ", i['description']) print("Le tournoi a débuté le : ", i['start']) print("Et s'est terminé le : ", i['end']) - print("Les participants étaient : \n", i['players']) + print("\nLes participants étaient : ") + for j in i['players'] : + print(j['ine'], "-", j['prénom'], str.upper(j['nom'])) print("\nLes matches et leurs résultats étaient :") for j in i['rounds']: print(j['Nom']) @@ -137,6 +132,14 @@ class View: for k in j['Matches']: print(k) print() + print("Les scores finaux :") + for j in i['players']: + print(j['prénom'], str.upper(j['nom']), ":", j['score']) def display_error(self): print("Erreur de saisie, recommencez;") + + def display_player_instructions(self): + print("Placez un fichier joueur dans le répertoire data " + "ou créez des nouveaux joueurs depuis le menu") + print()