146 lines
5.2 KiB
Python
146 lines
5.2 KiB
Python
from datetime import datetime
|
|
import re
|
|
|
|
|
|
class View:
|
|
"""Prompt menu, get choices"""
|
|
def __init__(self):
|
|
pass
|
|
|
|
def check_date(self):
|
|
while True:
|
|
date = input("Date de naissance (jj/mm/aaaa) ? : ")
|
|
if datetime.strptime(date, '%d/%m/%Y'):
|
|
break
|
|
else:
|
|
print("La date doit être au format jj/mm/aaaa")
|
|
|
|
def test_ine(self):
|
|
ine_pattern = r'[a-zA-Z]{2}\d{5}'
|
|
while True:
|
|
ine = input("Identifiant National d'Echecs (ine) ? : ")
|
|
if re.match(ine_pattern, ine):
|
|
break
|
|
else:
|
|
print("Mauvais format d'ine")
|
|
|
|
def prompt_for_scores(self):
|
|
print()
|
|
input("Saisir les scores ? (y)")
|
|
return True
|
|
|
|
def prompt_for_round(self, round):
|
|
print()
|
|
input(f"Prêt à lancer le {round.name} ? (y)")
|
|
return True
|
|
|
|
def prompt_for_new_player(self) -> dict:
|
|
print("Enregistrez un nouveau joueur :\n")
|
|
lastname = input("Nom de famille ? : ")
|
|
name = input("Prénom ? : ")
|
|
birthdate = input("Date de naissance (jj/mm/aaaa) ? : ")
|
|
ine = input("Identifiant National d'Echecs (ine) ? : ")
|
|
return {'name': name,
|
|
'lastname': lastname,
|
|
'birthdate': birthdate,
|
|
'ine': ine}
|
|
|
|
def prompt_for_tournament(self) -> dict:
|
|
tournament_details = {}
|
|
tournament_details['name'] = str.lower(input("Nom du tournoi ? : "))
|
|
tournament_details['location'] = str.lower(input("Lieu du tournoi : "))
|
|
tournament_details['date_start'] = (
|
|
input("date de début (jj/mm/aaaa) : [today] "
|
|
or datetime.now().strftime("%d/%m/%Y")))
|
|
tournament_details['date_end'] = (
|
|
input("date de fin (jj/mm/aaaa) : [today] "
|
|
or datetime.now().strftime("%d/%m/%Y")))
|
|
tournament_details['description'] = input("Description ? : ")
|
|
total_round = input("Nombre de tours ? (4 par défaut) : ") or 4
|
|
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:
|
|
try:
|
|
result = input(f"1.{match.player1}, "
|
|
f"2.{match.player2}, "
|
|
f"3.Nul\n")
|
|
if result in ("1", "2", "3"):
|
|
return result
|
|
else:
|
|
print("Entrez un chiffre entre 1 et 3")
|
|
except ValueError:
|
|
print("Veuillez entrer un chiffre")
|
|
|
|
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 :")
|
|
for player in player_list_to_display:
|
|
print(player.data())
|
|
|
|
def display_tournaments(self, tournament_list_to_display):
|
|
print("Liste des tournois : ")
|
|
for tournament in tournament_list_to_display:
|
|
print("-", tournament,
|
|
"le",
|
|
tournament_list_to_display[tournament]['start'])
|
|
|
|
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("\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'])
|
|
print("Commencé à ", j['Debut'])
|
|
print("Terminé à ", j['Fin'])
|
|
print("Liste des matchs :")
|
|
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()
|