Compare commits

..

17 Commits
simple ... dev

Author SHA1 Message Date
c1a0a79531 fix reversed method name 2025-02-14 19:54:52 +01:00
aea638d660 remove prints and inputs from controller to view 2025-02-14 11:49:52 +01:00
c9cf13c209 last run to be clean 2025-02-13 19:03:37 +01:00
9b881839ba display tournament prettier 2025-02-13 19:00:46 +01:00
5d4aa8127f add space 2025-02-13 18:58:39 +01:00
d09e781ded quit from menu to avoid loop 2025-02-13 18:56:46 +01:00
2397e6dbe4 removed unused methods 2025-02-13 18:27:46 +01:00
a1c7b5ab2c reset round list for a new tournament 2025-02-13 16:38:44 +01:00
52ae8b774d fix typo 2025-02-13 16:20:03 +01:00
fee2df07b1 add lines in display 2025-02-13 16:13:11 +01:00
fd87fabaf1 improve player display 2025-02-13 16:08:21 +01:00
cebb11380c fix modules path 2025-02-13 16:00:03 +01:00
653e3ef0f6 add move in right folder 2025-02-13 15:58:05 +01:00
89bda57fe5 Merge pull request 'simple' (#4) from simple into dev
Reviewed-on: #4
2025-02-13 14:52:08 +00:00
6043354279 Merge pull request 'simple' (#3) from simple into dev
Reviewed-on: #3
2025-02-13 14:44:48 +00:00
7c50729643 Merge pull request 'add flake report and instructions' (#2) from simple into dev
Reviewed-on: #2
2025-02-13 10:54:47 +00:00
cd14f05d54 Merge pull request 'simple' (#1) from simple into dev
Reviewed-on: #1
2025-02-13 10:32:13 +00:00
5 changed files with 62 additions and 36 deletions

View File

@ -27,6 +27,7 @@ source env/bin/activate
cloner le dépôt, aller dans le bon dossier cloner le dépôt, aller dans le bon dossier
``` ```
git clone https://mcstn.fr/gitea/Yann/Projet4.git git clone https://mcstn.fr/gitea/Yann/Projet4.git
cd Projet4
``` ```
## Exécution ## Exécution

View File

@ -7,8 +7,8 @@ import json
class Save: class Save:
def __init__(self): def __init__(self, view):
pass self.view = view
def load_file(self, file): def load_file(self, file):
try: try:
@ -22,7 +22,7 @@ class Save:
return data_tmp return data_tmp
except json.decoder.JSONDecodeError: except json.decoder.JSONDecodeError:
print("Erreur de format sur le fichier") self.view.display_format_error()
except FileNotFoundError: except FileNotFoundError:
return False return False
@ -37,7 +37,7 @@ class Save:
data_tmp = (self.load_file(PLAYERFILE)) data_tmp = (self.load_file(PLAYERFILE))
data_tmp.append(player) data_tmp.append(player)
self.write_file(data_tmp, PLAYERFILE) self.write_file(data_tmp, PLAYERFILE)
print("Joueur créé !") self.view.ok_player()
return True return True
def player_load(self) -> list: def player_load(self) -> list:
@ -55,7 +55,7 @@ class Save:
return data_list return data_list
else: else:
print("\n**** Pas de fichier joueur trouvé :/\n") self.view.display_file_error("joueur")
def tournament_write(self, tournament): def tournament_write(self, tournament):
data = { data = {
@ -74,7 +74,7 @@ class Save:
data_tmp = self.load_file(TOURNAMENTFILE) data_tmp = self.load_file(TOURNAMENTFILE)
return data_tmp return data_tmp
else: else:
print("\n**** Pas de fichier tournoi trouvé :/ \n") self.view.display_file_error("tournoi")
class Application: class Application:
@ -89,11 +89,8 @@ class Application:
def sort_by_score(self): def sort_by_score(self):
self.tournament.players_list.sort(key=lambda t: t.score, reverse=True) self.tournament.players_list.sort(key=lambda t: t.score, reverse=True)
def shuffle_players(self):
return shuffle(self.tournament.players_list)
def create_tournament(self): def create_tournament(self):
print("Nouveau tournoi ! \n") """update existing tournament with data from view"""
tournament_details = self.view.prompt_for_tournament() tournament_details = self.view.prompt_for_tournament()
self.tournament.name = tournament_details['name'] self.tournament.name = tournament_details['name']
self.tournament.location = tournament_details['location'] self.tournament.location = tournament_details['location']
@ -101,6 +98,7 @@ class Application:
self.tournament.date_end = tournament_details['date_end'] self.tournament.date_end = tournament_details['date_end']
self.tournament.description = tournament_details['description'] self.tournament.description = tournament_details['description']
self.tournament.total_round = tournament_details['total_round'] self.tournament.total_round = tournament_details['total_round']
self.tournament.round_list = []
if self.save.player_load(): if self.save.player_load():
self.tournament.players_list = self.save.player_load() self.tournament.players_list = self.save.player_load()
self.save.tournament_write(self.tournament) self.save.tournament_write(self.tournament)
@ -109,6 +107,8 @@ class Application:
self.menu_manager() self.menu_manager()
def run_tournament(self): def run_tournament(self):
"""creates all round iteration
"""
shuffle(self.tournament.players_list) shuffle(self.tournament.players_list)
self.view.display_players(self.tournament.players_list) self.view.display_players(self.tournament.players_list)
for each_round in range(1, self.tournament.total_round + 1): for each_round in range(1, self.tournament.total_round + 1):
@ -132,15 +132,12 @@ class Application:
self.view.display_round_info(self.round) self.view.display_round_info(self.round)
self.view.display_scores(self.tournament.players_list) self.view.display_scores(self.tournament.players_list)
print("\nLe tournoi", self.tournament.name, "est terminé !\n") self.view.ok_done(self.tournament.name)
def get_match_info(self, match_list):
matches = []
for i in match_list:
matches.append(i.get_data())
return matches
def check_match(self, match, match_history): def check_match(self, match, match_history):
"""check if match is in list
For future usage
"""
for item in match_history: for item in match_history:
if match in item: if match in item:
return True return True
@ -163,7 +160,7 @@ class Application:
match.player2 = self.tournament.players_list[i+1] match.player2 = self.tournament.players_list[i+1]
if self.match_history.check(match): if self.match_history.check(match):
# match.player2 = self.tournament.players_list[i+2] # match.player2 = self.tournament.players_list[i+2]
print("deja joue") self.view.display_error_already()
match_list.append(match) match_list.append(match)
except IndexError: except IndexError:
pass pass
@ -197,8 +194,8 @@ class Application:
while True: while True:
# Quit # Quit
if menu_choice == "4": if menu_choice == "4":
print("Bye") self.view.display_quit()
break quit()
# Rapports # Rapports
elif menu_choice == "3": elif menu_choice == "3":
rapport_choice = self.menu.items(2) rapport_choice = self.menu.items(2)
@ -211,14 +208,14 @@ class Application:
elif rapport_choice == "1": elif rapport_choice == "1":
if self.save.player_load(): if self.save.player_load():
self.view.display_players(self.save.player_load()) self.view.display_players(self.save.player_load())
input("?") self.view.prompt_next()
# Display list of tournaments # Display list of tournaments
elif rapport_choice == "2": elif rapport_choice == "2":
if self.save.tournament_load(): if self.save.tournament_load():
self.view.display_tournaments( self.view.display_tournaments(
self.save.tournament_load()) self.save.tournament_load())
input("?") self.view.prompt_next()
# display tournament's details # display tournament's details
elif rapport_choice == "3": elif rapport_choice == "3":
@ -236,12 +233,12 @@ class Application:
elif menu_choice == "2": elif menu_choice == "2":
joueur = self.view.prompt_for_new_player() joueur = self.view.prompt_for_new_player()
self.save.player_write(joueur) self.save.player_write(joueur)
input("Retour ?") self.view.prompt_next()
self.menu_manager() self.menu_manager()
# create new tournament # create new tournament
elif menu_choice == "1": elif menu_choice == "1":
print("c'est parti") self.view.ok_go()
self.create_tournament() self.create_tournament()
self.run_tournament() self.run_tournament()
self.menu_manager() self.menu_manager()

View File

@ -9,7 +9,7 @@
<div id="masthead" class="sev-4"></div> <div id="masthead" class="sev-4"></div>
<div id="page"> <div id="page">
<h1>flake8 violations</h1> <h1>flake8 violations</h1>
<p id="versions">Generated on 2025-02-13 15:45 <p id="versions">Generated on 2025-02-14 11:49
with Installed plugins: flake8-html: 0.4.3, mccabe: 0.7.0, pycodestyle: 2.12.1, pyflakes: 3.2.0 with Installed plugins: flake8-html: 0.4.3, mccabe: 0.7.0, pycodestyle: 2.12.1, pyflakes: 3.2.0
</p> </p>
<ul id="index"> <ul id="index">

10
main.py
View File

@ -1,13 +1,13 @@
from ChessTournament.models.models import Tournament from models.models import Tournament
from ChessTournament.controllers.base import Application, Save from controllers.base import Application, Save
from ChessTournament.views.base import View from views.base import View
from ChessTournament.views.menu import Menu from views.menu import Menu
def main(): def main():
tournament = Tournament() tournament = Tournament()
save = Save()
view = View() view = View()
save = Save(view)
menu = Menu() menu = Menu()
application = Application(tournament=tournament, application = Application(tournament=tournament,
save=save, save=save,

View File

@ -29,6 +29,11 @@ class View:
input("Saisir les scores ? (y)") input("Saisir les scores ? (y)")
return True return True
def prompt_next(self):
print()
input("?")
return True
def prompt_for_round(self, round): def prompt_for_round(self, round):
print() print()
input(f"Prêt à lancer le {round.name} ? (y)") input(f"Prêt à lancer le {round.name} ? (y)")
@ -102,12 +107,12 @@ class View:
print(i.ine, ':', i.name, i.lastname, i.score) print(i.ine, ':', i.name, i.lastname, i.score)
def display_players(self, player_list_to_display): def display_players(self, player_list_to_display):
print("Liste des joueurs :") print("\nListe des joueurs :")
for player in player_list_to_display: for player in player_list_to_display:
print(player.data()) print(f"{player.name} {str.upper(player.lastname)} ({player.ine})")
def display_tournaments(self, tournament_list_to_display): def display_tournaments(self, tournament_list_to_display):
print("Liste des tournois : ") print("\nListe des tournois : ")
for tournament in tournament_list_to_display: for tournament in tournament_list_to_display:
print("-", tournament, print("-", tournament,
"le", "le",
@ -115,7 +120,8 @@ class View:
def display_tournament_detail(self, tournament_to_display): def display_tournament_detail(self, tournament_to_display):
i = tournament_to_display i = tournament_to_display
print("Nom du tournoi : ", i['name']) print("\n***************************************************")
print("\nNom du tournoi : ", i['name'])
print("Lieu : ", i['location']) print("Lieu : ", i['location'])
print("Description : ", i['description']) print("Description : ", i['description'])
print("Le tournoi a débuté le : ", i['start']) print("Le tournoi a débuté le : ", i['start'])
@ -135,11 +141,33 @@ class View:
print("Les scores finaux :") print("Les scores finaux :")
for j in i['players']: for j in i['players']:
print(j['prénom'], str.upper(j['nom']), ":", j['score']) print(j['prénom'], str.upper(j['nom']), ":", j['score'])
print("\n***************************************************")
def display_error(self): def display_error(self):
print("Erreur de saisie, recommencez;") print("Erreur de saisie, recommencez;")
def display_format_error(self):
print("\n**** Erreur de format de fichier")
def display_file_error(self, file):
print(f"\n**** Pas de fichier {file} trouvé :/")
def display_player_instructions(self): def display_player_instructions(self):
print("Placez un fichier joueur dans le répertoire data " print("Placez un fichier joueur dans le répertoire data "
"ou créez des nouveaux joueurs depuis le menu") "ou créez des nouveaux joueurs depuis le menu")
print() print()
def display_quit(self):
print("Bye !")
def display_error_already(self):
print("Déjà joué")
def ok_player(self):
print("\nJoueur créé.")
def ok_go(self):
print("\n!!! C'est parti !!!\n")
def ok_done(self, name):
print(f"\nLe tournoi {name} est terminé !\n")