Code du projet NSI sur l'analyse automatique des tirs de basket.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
3.8 KiB

from math import *#Si une variable possède un PLH dans le code final fonctionnel, c'est un placeholder et doit
#Être supprimé. (Et cette ligne aussi)(Le fichier code devrait aussi etre renommé)
#I use arch, btw
#Je laisse le reste sinon on va croire que j'ai tout fait tout seul x)
#Bon courage :D
#Si j'ai fais une erreur faut la corriger (ou si vous trouvez un meilleur moyen de faire cela)
def reussite (joueur,action):
"""Prend en valeur un nom de joueur et une action et donne
(<actions_prises_par_le_joueur>,<actions_reussies_de_ce_joueur>)"""
actions_reussies = 0
actions_prises = 0
with open("stats.txt",'r') as fichier_stat:
for ligne in fichier_stat:
ligne_separe = ligne.split(" ")
if ligne_separe[0] == joueur and action in ligne_separe[1]:
actions_prises += 1
if 'reussi' in ligne_separe[1]:
actions_reussies += 1
return actions_prises,actions_reussies
def points (x,y):
"""la fonction doit prendre en paramètres x et y
les coords du point d'action et doit renvoyer 2 ou 3 en fonction du point de tir"""
air_demi= 2*pi*250
air_gauche=2*pi*y
air_droite=2*pi*(2*x-y)#j'ai ça qui marchait un peu près mais jsp si c ça(1000-y)-(600-x)j'ai mis ça dcp mais pas sur nn plus
if air_gauche<=air_demi or air_droite<=air_demi:
return 2
else :
return 3 #DCP LAISSEZ MOI(COCO) CETTE FONCTION SVP
def totalPoints(joueur):
"""Utilise la fonction 'points()' pour calculer les points
d'un joueur donné."""
totpoints=0
x=0
y=0
with open('stats.txt','r') as fichier_stat:
for ligne in fichier_stat:
ligne_separe = ligne.split(" ")
if ligne_separe[0]==joueur and ligne_separe[1]== 'tir-reussi':
ligne_separe[2]= x
ligne_separe[3]= y
totpoints=totpoints+points(x,y)
return totpoints
def rebondsPasses(joueur):
"""Prend en paramètre un nom de joueur et donne (<nombre_de_rebonds>,
<nombre_de_passes>)"""
nombre_de_rebonds = 0
nombre_de_passes = 0
with open('stats.txt','r') as fichier_stat:
for ligne in fichier_stat:
ligne_separe = ligne.split(" ")
if ligne_separe[0] == joueur:
if 'rebond' in ligne_separe[1]:
nombre_de_rebonds += 1
elif 'passe' in ligne_separe[1]:
nombre_de_passes += 1
return nombre_de_rebonds,nombre_de_passes
#Je ne suis pas sur si il faut changer quelque chose avec le deux types de rebonds
#On verra.
def manque(joueur):
"""Prend un nom de joueur et retourne le nombre d'actions manquées et
de pertes de balle par le joueur."""
nombre_de_rates_et_pertes = 0
with open('stats.txt','r') as fichier_stat:
for ligne in fichier_stat:
ligne_separe = ligne.split(" ")
if ligne_separe[0] == joueur:
if 'manque' in ligne_separe[1] or 'perteBalle' in ligne_separe[1]:
nombre_de_rates_et_pertes += 1
return nombre_de_rates_et_pertes
def afficheStats(joueur):"""diff stats points marqués, pourcentage de reussite etc"""
#TESTS :
print('Le joueur 1 a tiré et réussi', reussite('J1','tir'))
print('le joueur 1 a fait ce nombre de rebonds et passes',rebondsPasses('J1'))
print('Le joueur 1 a raté et perdu la balle',manque('J1'),'fois')
print(points(500,300))#censé etre 3 points
print(points(150,300))#censé etre 2 points
print(points(900,100))#censé etre 2 points
print(points(750,400))#censé etre 3 points
print(points(50,500))#censé etre 2 points
print(points(50,550))#censé etre 3 points mais ne donne que 2 points
print(points(950,600))#censé etre 3 points
print(totalPoints('J1'))