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
```
git clone https://mcstn.fr/gitea/Yann/Projet4.git
cd Projet4
```
## Exécution
@ -45,7 +46,7 @@ Si vous souhaitez spécifier une liste de joueurs au format JSON, il vous faut l
dans le répertoire `data`
Sinon, vous pouvez créer des joueurs via le menu
Le répertoire, nom des fichiers joueurs et tournois sont des constantes de models.py
Le répertoire, nom des fichiers joueurs et tournois sont des constantes de models.py
Ils sont placés dans le dossier `data`
## Auteur
@ -56,4 +57,4 @@ Yann <yann@needsome.coffee>
## License
N/A
N/A

View File

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

View File

@ -9,7 +9,7 @@
<div id="masthead" class="sev-4"></div>
<div id="page">
<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
</p>
<ul id="index">

10
main.py
View File

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

View File

@ -29,6 +29,11 @@ class View:
input("Saisir les scores ? (y)")
return True
def prompt_next(self):
print()
input("?")
return True
def prompt_for_round(self, round):
print()
input(f"Prêt à lancer le {round.name} ? (y)")
@ -102,12 +107,12 @@ class View:
print(i.ine, ':', i.name, i.lastname, i.score)
def display_players(self, player_list_to_display):
print("Liste des joueurs :")
print("\nListe des joueurs :")
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):
print("Liste des tournois : ")
print("\nListe des tournois : ")
for tournament in tournament_list_to_display:
print("-", tournament,
"le",
@ -115,7 +120,8 @@ class View:
def display_tournament_detail(self, 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("Description : ", i['description'])
print("Le tournoi a débuté le : ", i['start'])
@ -135,11 +141,33 @@ class View:
print("Les scores finaux :")
for j in i['players']:
print(j['prénom'], str.upper(j['nom']), ":", j['score'])
print("\n***************************************************")
def display_error(self):
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):
print("Placez un fichier joueur dans le répertoire data "
"ou créez des nouveaux joueurs depuis le menu")
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")