simple #1

Merged
Yann merged 10 commits from simple into dev 2025-02-13 10:32:14 +00:00
3 changed files with 59 additions and 48 deletions
Showing only changes of commit 425c5c716b - Show all commits

View File

@ -1,5 +1,7 @@
from ChessTournament.models.models import Player, Tournament, Round, Match from ChessTournament.models.models import Player, Tournament, Round, Match
from ChessTournament.views.menu import Menu from ChessTournament.views.menu import Menu
from ChessTournament.views.base import View
from random import shuffle from random import shuffle
@ -8,11 +10,11 @@ class Controller:
# loading models # loading models
self.players_list = [] self.players_list = []
self.score_list = [] self.score_list = []
self.tournament = Tournament()
self.round = Round()
self.match = Match() self.match = Match()
self.tournament = Tournament()
# loading views # loading views
self.view = View()
self.menu = Menu() self.menu = Menu()
# for test # for test
@ -26,7 +28,7 @@ class Controller:
self.liste = [joueur1, joueur2, joueur3, joueur4, joueur5, joueur6] self.liste = [joueur1, joueur2, joueur3, joueur4, joueur5, joueur6]
def sort_by_score(self): def sort_by_score(self):
return sorted(self.tournament.players_list, key=lambda t: t.score) self.tournament.players_list.sort(key=lambda t: t.score, reverse = True)
def shuffle_players(self): def shuffle_players(self):
return shuffle(self.tournament.players_list) return shuffle(self.tournament.players_list)
@ -40,6 +42,7 @@ class Controller:
self.tournament.description = input("Description ? : ") self.tournament.description = input("Description ? : ")
#self.tournament.players_list = input("Liste des joueurs : ") #self.tournament.players_list = input("Liste des joueurs : ")
self.tournament.players_list = self.liste self.tournament.players_list = self.liste
total_round = input("Nombre de tours ? (4 par défaut) : ") or 4 total_round = input("Nombre de tours ? (4 par défaut) : ") or 4
if total_round != 4: if total_round != 4:
self.tournament.total_round = int(total_round) self.tournament.total_round = int(total_round)
@ -48,32 +51,37 @@ class Controller:
def run_tournament(self): def run_tournament(self):
input("Prêt à lancer le premier round ?\n") input("Prêt à lancer le premier round ?\n")
#print("tour", self.tournament.current_round, round1.start_time) #print("tour", self.tournament.current_round, round1.start_time)
print("Liste des joueurs : ", self.tournament.players_list)
shuffle(self.tournament.players_list)
for i in range(1, self.tournament.total_round): for i in range(1, self.tournament.total_round):
self.round = Round()
self.round.name = "Round " + str(i) self.round.name = "Round " + str(i)
self.tournament.current_round = self.round.name self.tournament.current_round = self.round.name
if i == 1:
# self.tournament.players_list = self.shuffle_players()
print(self.tournament.players_list)
else:
self.tournament.players_list = self.sort_by_score()
#pour chaque tour : #pour chaque tour :
# set le temps de début # set le temps de début
# créer les matchs # créer les matchs
# afficher les matchs # afficher les matchs
# attendre la saisie des scores # attendre la saisie des scores
# ajouter le tour à la liste des tours du tournoi # ajouter le tour à la liste des tours du tournoi
print(self.round.name)
self.round.start_time = self.round.turn_time() self.round.start_time = self.round.get_time()
self.round.match_list = self.create_match() self.round.match_list = self.create_match()
#self.view.print_match_list()
print(self.round.match_list) print("Liste des joueurs, après tri : ", self.tournament.players_list)
print("Liste des matchs du Round : ", self.round.match_list)
#self.view.prompt_for_scores() #self.view.prompt_for_scores()
print("saisir les scores :") print("saisir les scores :")
input("Round suivant ?") self.view.input_scores(self.round.match_list)
# append self.tournament.round_list with [round, match_list]
self.sort_by_score()
print("scores du round :\n")
for i in self.tournament.players_list:
print(i.ine, " : ", i.score)
input("Continuer ?")
def create_match(self): def create_match(self):
"""Create match with two consecutive players. Check if match already happened in round """Create match with two consecutive players. Check if match already happened in round
@ -82,50 +90,29 @@ class Controller:
""" """
j = 0 j = 0
k = 0 k = 0
print(self.tournament.players_list)
for i in range(0, len(self.tournament.players_list), 2): for i in range(0, len(self.tournament.players_list), 2):
j += 1 j += 1
self.match.name = "match" + str(j) match_name = "match" + str(j)
print(self.match.name) match = Match()
self.match.player1 = self.tournament.players_list[i] match.player1 = self.tournament.players_list[i]
self.match.player2 = self.tournament.players_list[i+1] match.player2 = self.tournament.players_list[i+1]
print(self.match) self.round.match_list.append(match)
if self.match in self.round.match_list:
k += 1
print(i, k)
print(self.tournament.players_list[i])
print(i + k)
#print(self.tournament.players_list[i+k].ine)
#self.match.player2 = self.tournament.players_list[i+k].ine
self.round.match_list.append(self.match.get_data())
else:
self.round.match_list.append(self.match.get_data())
return self.round.match_list return self.round.match_list
def record_new_player(self): def record_new_player(self):
# get_player = {}
print("Enregistrez un nouveau joueur :\n") print("Enregistrez un nouveau joueur :\n")
# get_player['lastname'] = input('Nom de famille :\n')
# get_player['name'] = input('Prénom :\n')
#get_player['birth_date'] = input('Date de naissance :\n')
self.lastname = input("Nom de famille ? : ") self.lastname = input("Nom de famille ? : ")
self.name = input("Prénom ? : ") self.name = input("Prénom ? : ")
self.birthdate = input("Date de naissance (jj/mm/aaaa) ? : ") self.birthdate = input("Date de naissance (jj/mm/aaaa) ? : ")
#self.birthdate = self.check_date() #self.birthdate = self.check_date()
self.ine = input("Identifiant National d'Echecs (ine) ? : ") self.ine = input("Identifiant National d'Echecs (ine) ? : ")
#self.ine = self.test_ine() #self.ine = self.test_ine()
# convert dict in json object and write it in players.json file (with "a" append to file)
# with open("players.json", "a") as output:
# output.write(json.dumps(get_player, indent=3))
return {"Nom": self.lastname, "Prénom": self.name, "Date de naissance": self.birthdate, "INE": self.ine} return {"Nom": self.lastname, "Prénom": self.name, "Date de naissance": self.birthdate, "INE": self.ine}
def run(self): def run(self):
menu_choice = self.menu.items(1) menu_choice = self.menu.items(1)
if menu_choice == "4": if menu_choice == "4":
print("Bye") print("Bye")
@ -137,8 +124,9 @@ class Controller:
print("c'est parti") print("c'est parti")
self.create_tournament() self.create_tournament()
self.run_tournament() self.run_tournament()
print("Tournoi terminé.\n Les scores sont :\n")
for i in self.tournament.players_list:
print(i.ine, " : ", i.score)

View File

@ -39,8 +39,8 @@ class Match:
self.score2 = 0 self.score2 = 0
def __str__(self): def __str__(self):
return self.player1.name + " " + self.player1.lastname + " / " + self.player2.name + " " + self.player2.lastname #return self.player1.name + " " + self.player1.lastname + " / " + self.player2.name + " " + self.player2.lastname
return self.player1.ine + "/" + self.player2.ine
def __repr__(self): def __repr__(self):
return str(self) return str(self)
@ -59,7 +59,7 @@ class Round:
self.start_time = None self.start_time = None
self.end_time = None self.end_time = None
def turn_time(self): def get_time(self):
return datetime.now().strftime("%d-%m-%Y, %H:%M:%S") return datetime.now().strftime("%d-%m-%Y, %H:%M:%S")
def create_match2(self): def create_match2(self):

View File

@ -32,3 +32,26 @@ class View:
else: else:
print("Mauvais format d'ine") print("Mauvais format d'ine")
def input_scores(self, match_list):
for match in match_list:
print(match)
print("Scores pour match", match_list.index(match) + 1, " :")
while True:
try:
result = input(f"1.{match.player1}, 2.{match.player2}, 3.Nul\n")
if result in ("1", "2", "3"):
if result == "1":
match.player1.score += 1
elif result == "2":
match.player2.score += 1
elif result == "3":
match.player1.score += 0.5
match.player2.score += 0.5
break
else:
print("Entrez un chiffre entre 1 et 3")
except ValueError:
print("Veuillez entrer un chiffre")