### les fonctions n'ont pas de documentation
### la fonction affichestats n'est pas très explicite et n'affiche pas tous les éléments
### pourquoi mettre un print(affichestats()) au lieu de lancer la fonction simplement?
### il serait bien de pourvoir choisir le joueur
### note : 16

#définition de la fonction
def reussite (joueur, action):
    #établissement des variables
    tentatives = 0
    réussites = 0
    #en ouvrant le fichier stats la commande va cherche une ligne avec le nom du joueur l'action et ajouter + 1 ) la variable tentatives chaque fois qu'elle la trouve puis regarder si le mot reussi est sur la même ligne si c'est le cas elle ajoutera + 1 à la variable réussite
    with open("stats.txt", "r") as fichier:
        for ligne in fichier:
            if joueur.upper() + " " in ligne and action in ligne:
                tentatives += 1
                if "tir-reussi" in ligne or "lancer-reu" in ligne:
                    réussites += 1
    return tentatives, réussites,

#print(reussite("j4v", "tir"))

def points (x, y):
    #les coordonnées du centre gauche et droit et le rayon du cercle
    centre_gauche = (0, 300)
    centre_droit = (1000, 300)
    rayon = 250
    #on vérifie si le point est dans le cercle gauche ou droit
    dans_gauche = (x - centre_gauche[0])**2 + (y - centre_gauche[1])**2 <= rayon**2 and x <= 0 + rayon
    dans_droit = (x - centre_droit[0])**2 + (y - centre_droit[1])**2 <= rayon**2 and x >= 1000 - rayon
    #si c'est le cas on revoie 2 sinon on renvoie 3
    if dans_gauche or dans_droit:
        return 2
    else:
        return 3
    
#print(points(250, 300))

def totalpoints (joueur):
    #on établie la variable des points totaux
    total_points = 0
    with open("stats.txt", "r") as fichier:
        for ligne in fichier:
            element = ligne.split()
            #on regarde dans chaque ligne si le nom du joueur choisit y est
            if joueur.upper() + " " in ligne:
                #si le nom est suivi de tir-reussi la commande regardera à l'aide de la fonction points si c'est un tir à 2 ou 3 point puis ajoutera en conséquence 2 ou 3 à la variable total_points
                if element[1] == "tir-reussi":
                    x = int(element[2])
                    y = int(element[3])
                    total_points += points(x, y)
                #si c'est un lancer franc la commande ajoutera 1 à la variablke total_points
                elif element[1] == "lancer-reu":
                    total_points += 1
    return total_points

#print(totalpoints("j1"))

def rebondspasses (joueur):
    with open("stats.txt", "r") as fichier:
        rebond_pris = 0
        passe = 0
        for ligne in fichier:
            if joueur.upper() + " " in ligne and ("rebondOff"or "rebondDef") in ligne:
                rebond_pris += 1
            elif joueur.upper() + " " in ligne and "passe" in ligne:
                passe += 1
    return rebond_pris, passe

#print(rebondspasses("j1"))

def manque (joueur):
    with open("stats.txt", "r") as fichier:
        #on établie la variable de perte de balle
        perte_balle = 0
        for ligne in fichier:
            #si le nom du joueur et un tir-manque apparait sur la même ligne la variable augemnte de 1
            if joueur.upper() + " " in ligne and "tir-manque" in ligne:
                perte_balle += 1
            #de même pour un lancer raté
            elif joueur.upper() + " " in ligne and "lancer-rat" in ligne:
                perte_balle += 1
    return perte_balle

#print(manque("j1"))

def affichestats (joueur):
    print(totalpoints(joueur))
    taux_reussite = reussite(joueur, "tir")
    print(taux_reussite[1] / taux_reussite[0] * 100)
    print(manque(joueur))

print(affichestats("j1"))