Gérer le score d'un tennis

Fermé
jodu4200 Messages postés 11 Date d'inscription mardi 21 avril 2015 Statut Membre Dernière intervention 3 mai 2015 - Modifié par jordane45 le 28/04/2015 à 19:24
 Utilisateur anonyme - 3 mai 2015 à 22:18
bonjour à tous, je passe à l'oral dans deux semaine et j'ai un gros problème je dois effectuer le projet suivant: gérer le score d'un tennis.

Astuce: 1- a quelle condition un joueur gagne-t-il un jeu?
2- Définir une fonction qui compte les points au cours d'un jeu. Le programme s'arrête dès qu'un joueur gagne le jeu, après avoir affiché le nom du vainqueur.
3-Ecrire une deuxième fonction fonction qui compte les jeux aux cours d'un set et s'arrête lorsqu'un joueur gagne le set. cette fonction fera appel à la précédente pour savoir qui gagne les jeux. On n'oubliera pas de prévoir le cas particulier du jeu décisif.
4- Ecrire une troisième fonction qui compte les sets et s'arrête lorsqu'un joueur gagne le match. on pourra, avant de commencer le match,demander en combien de sets gagnants il est joué.

alors voila ce que j'ai fait :
def point():
    nadal=1
    federer=2
    score=[0,15,30,40,"jeu"]
    ex=[40,"adv","jeu"]
    score1=score[0]
    score2=score[0]
    j1=0
    j2=0
    while score1!="jeu" and score2!="jeu":
        vainqueur=input("qui a marque?")
        if score1==40 and score2==40:
            if vainqueur=="1":
                score1="adv"
            else:
                score2="adv"
        elif score1==40 and score2=="adv":
            if vainqueur=="2":
                score1=40
                score2="jeu"
            elif vainqueur=="1":
                score1=40
            score2=40
        elif score1=="adv" and score2==40 :
            if vainqueur=="1":
                score1="jeu"
                score2=40
            elif vainqueur=="2":
                score1=40
                score2=40
        elif vainqueur=="1":
            j1=j1+1
            score1=score[j1]
        else:
            j2=j2+1
            score2=score[j2]
        print(score1,score2)
    print(score1,score2)

j'ai écrit la fonction qui compte les points mais après je n'arrive pas à écrire la fonction jeu et je ne sais pas comment relier la fonction jeu à la fonction point


EDIT : Ajout des balises de code
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

1 réponse

Utilisateur anonyme
28 avril 2015 à 15:39
Salut,

Donne plus de précision sur la fonction qu'il te manque stp
0
jodu4200 Messages postés 11 Date d'inscription mardi 21 avril 2015 Statut Membre Dernière intervention 3 mai 2015
28 avril 2015 à 18:33
salut en faite voila ce qu'il faut faire d'après mon professeur:

1) Je vous propose (pour le moment !) de simplifier le match de tennis : 1 seul set, pas de tie-break.


2) Séparer l'affichage de la logique du programme. C'est toujours très important. Sauriez-vous afficher le score de la façon suivante (par exemple) :

Set Jeu

Nadal 2 15

Federer 1 30



Cette affichage du score sera confié à une fonction « AfficherScore() » (pas de paramètres, pas de valeur de retour).

A chaque fois qu'un point est marqué, on appelle cette fonction.



3) De quelles données a-t-on besoin pour afficher le score ci-dessus ?

- Pour le set ça va bien, sachant qu'il peut y avoir 6-4 ou 5-7 mais aussi 10-8 ou 13-11 (sachant que le record est 70-68 le 24/06/2010 à Wimbledon entre Isner et Mahut !);

- Pour le jeu, d'un point de vue logique ça va aussi, on n'a besoin que des nombres successifs 0, 1, 2, 3, 4, 5, 6, 7, 8, ... Le gagnant du jeu est le premier qui marque 4 points ou plus avec au moins 2 points de plus que son adversaire. D'un point de vue de l'affichage... si 0 on affiche 0, si 1 on affiche 15, etc... mais c'est le problème de l'affichage !

- Ces données seront des données globales, mémorisées dans des variables globales. Avez-vous compris la notion de variables globales (déclarées dans le programme principal) et locales (variables déclarées dans une fonction).


4) Je vous propose l'algorithme ci-dessous pour la boucle principale (vous avez le droit de changer le nom des variables si vous voulez).


Voilà, c'est tout. Dites moi si ma réponse vous a aidé. N'hésitez pas à me recontacter.
Bon développement,
Yann Beauquis


Algo proposé pour la boucle principale :

DEBUT
Tant que (non fin du match) Faire
# appel de la fonction « AfficherScore() »
AfficherScore()

# appel de la fonction « JouerPoint() »
# inviter l'utilisateur à rentrer le gagnant du point (1 ou 2)
# valeur de retour : 1 ou 2
gagnantPoint = JouerPoint()

# appel de la fonction « Jeu(gagnantPoint) » :
# Paramètre :
# gagnantPoint : le gagnant du point (1 ou 2)
# Valeur de retour : 1 si Nadal gagne le jeu, ou 2 si Federer gagne, ou 0 si le jeu continue
# Description :
# Incrémenter de 1 le jeu du gagnant du point
# Si (jeu gagné) alors
# afficher "jeu" pour le joueur gagnant (par exemple « jeu Federer » ou « jeu joueur 2 »)
# réinitialiser à zéro le score du jeu (pour le prochain jeu)
# retour = le gagnant du jeu (1 ou 2)
# Sinon
# retour = 0
gagnantJeu = Jeu(point)

# appel de la fonction « Set(gagnantJeu) » si jeu est égal à 1 ou 2 :
# Paramètre :
# gagnantJeu: le gagnant du jeu (1 ou 2)
# Valeur de retour : 1 si Nadal gagne le set, ou 2 si Federer gagne, ou 0 si le set continue
# Description :
# Incrémenter de 1 le set du gagnant du jeu
# Si (set gagné) alors
# afficher "set" pour le joueur gagnant (par exemple « set Federer » ou « set joueur 2 »)
# retour = le gagnant du set (1 ou 2)
# Sinon
# retour = 0
Si (gagnantJeu égal à 1 ou 2) alors
gagnantSet = Set(gagnantJeu)
Finsi

Fin tant que
FIN

si tu pourrais m'aider sa serai juste génial sachant que je passe dans 2 semaines :(
0
Utilisateur anonyme
28 avril 2015 à 18:46
Oui, ton sujet c'est génial mais je vais pas te pondre un truc (en plus, j'ai la flemme). Par contre, je veux bien bosser avec toi. Tu parlais, au début, d'une fonction jeu que tu n'arrives pas à faire. Parle-moi de cette fonction, à quoi elle sert ?
0
jodu4200 Messages postés 11 Date d'inscription mardi 21 avril 2015 Statut Membre Dernière intervention 3 mai 2015
28 avril 2015 à 19:06
ah ouais mince j'aurais vraiment besoins d'aide
la fonction jeu consiste a reprendre le resultat de la fonction point et ainsi pouvoir afficher le nbre de jeu gagné
0
Utilisateur anonyme
28 avril 2015 à 19:19
Ta fonction point ne fais pas l'inverse ? Il me semble qu'elle part du nombre de jeu gagné et affiche un score. De plus, si tu veux utiliser le résultat de la fonction point, il faut renvoyer le score.
0
jodu4200 Messages postés 11 Date d'inscription mardi 21 avril 2015 Statut Membre Dernière intervention 3 mai 2015
28 avril 2015 à 19:44
non ma fonction point fait:
tant que score est different de jeu faire les points (0,15,30,40,adv)
pour retourner le score il faut faire return vainqueur?
si tu pourrais m'aider sa serait énorme
0