2010-12-03 19 views
0

besoin d'aide avec une fin d'année affectation de programme de tennis:tennis de python scoreboard

Dans ce problème, vous fournirez une interface et d'affichage pour un match de tennis. Voici les règles pour marquer un match de tennis.

• Il y a deux joueurs. Appelons-les joueur 1 et joueur 2.

• Les joueurs rallient la balle d'avant en arrière et le vainqueur de chaque rallye gagne un point.

• Un jeu est une séquence de plusieurs points. Chaque joueur commence avec 0 points (Love all), et le joueur est gagné par le joueur qui obtient le premier suivant:
- le joueur a 4 points; et
- le joueur a 2 points de plus que l'autre joueur. • Les Britanniques ont un système de numérotation intelligent pour les points dans une partie.
Un joueur avec 0 points a "Love". S'ils ont 1 point, ils l'appellent "15". 2 points sont "30"; 3 points, "40". Si les deux joueurs sont à égalité à 3 points ou plus, ils l'appellent "Deuce".

Si les deux joueurs ont 3 points ou plus, mais qu'ils ne sont pas à égalité, alors le joueur qui se trouve devant a l'avantage.

• Un ensemble est une séquence de jeux.
Le gagnant de l'ensemble est le premier joueur à atteindre:
6 parties avec au moins 2 parties de plus que l'autre joueur; ou
- 7 parties.

Dans le cas où les deux joueurs sont à égalité à 6 matchs chacun, les règles changent pour la façon dont le 13e et le jeu décisif sont marqués. Ce jeu est appelé le tie-break, et il est gagné par le premier joueur à accumuler 7 points avec 2 points de plus que l'autre joueur. Dans un jeu décisif, la numérotation britannique n'est pas utilisée; à la place, le score commence à 0-0, et les points sont comptés dans une séquence numérique croissante.

• Une correspondance est une séquence d'ensembles. Chez les hommes, le vainqueur du match est le premier joueur à atteindre 3 sets. Chez les femmes, le gagnant est le premier joueur à atteindre 2 sets. Compléter la fonction points_str (p1, p2) qui, étant donné p1, le nombre de points pour Player 1, et p2, le nombre de points pour le joueur 2, renvoie une chaîne qui représente l'équivalent britannique du score du joueur 1 . Si le joueur 1 a l'avantage, retourner "Adv", tandis que si le joueur 2 a l'avantage, retourner "-". Pour des exemples,
• points_str (0, 2) doit renvoyer "Love".
• points_str (3, 1) devrait retourner "40".
• points_str (3, 3) devrait retourner "Deuce".
• points_str (5, 4) devrait retourner "Adv".
• points_str (4, 5) devrait retourner "-".

Écrivez un programme Python qui simule une correspondance de tennis. Après avoir demandé à l'utilisateur les noms de chaque joueur et leur sexe, le programme affichera le tableau de bord après chaque point est joué.Pour déterminer qui gagne le point suivant, votre programme appellera la fonction importée arbitre() qui renvoie l'entier 1 si le joueur 1 gagne le point ou 2 si le joueur 2 gagne. Vous pouvez supposer que umpire() ne renvoie jamais rien sauf le nombre entier 1 ou le nombre entier 2.

Le programme devrait se terminer lorsque l'un des deux joueurs gagne la partie. Sortie du tableau de bord final, et un message décrivant qui gagne. Suivez le format de sortie comme indiqué dans les exemples.

Voici ci-dessous mon code pour la fonction. Il calcule seulement le gagnant du premier point et l'affiche. Comment puis-je boucler correctement pour calculer le vainqueur du jeu, le définir et le faire correspondre?

S'il vous plaît aidez-moi :) Merci!

def points_str(p1, p2): 
    p1setscore=0 
    p2setscore=0   # setting starting parameters for scorekeeping for games and 
    p1gamescore=0 
    p2gamescore=0 

male_setmax=3 
female_setmax=2  # setting parameters for maximum amount sets/games for male/female rules 
gamemax=7 


umpire() 
if umpire()== 1: 
     p1gamescore=p1gamescore+1 

else: 
     p2gamescore=p2gamescore+1 

print p1gamescore, p2gamescore 
+0

Avez-vous essayé d'exécuter ce code? Ce qui se produit? – aaronasterling

+0

J'ai la partie entrée juste là où elle demande le nom du joueur et son sexe. Puis j'ai incorporé d'autres sélections d'entrée. Ce code calcule simplement le gagnant du premier point et l'imprime. Le score si le joueur 1 gagne le point est (1,0) qui devrait retourner 15-amour. Je ne sais pas comment faire une boucle pour calculer et renvoyer le gagnant du jeu, les ensembles, et finalement correspondre. –

+0

Donc, vous n'obtenez aucun 'NameError' lorsque vous exécutez ce code? En outre, vous allez manquer des points. – aaronasterling

Répondre

1

Ecrit une fonction qui revient si quelqu'un (éventuellement qui) gagne et une autre fonction qui teste les scores des joueurs et renvoie la chaîne de situation de score. En boucle, appelez umpire(), accumulez les points et obtenez et renvoyez la situation jusqu'à ce que quelqu'un gagne (indice: while not winnerfunc(...):). Pensez-y en termes d'états.

0

Il y a six états:

  1. normale (score [0123] - [0123], à l'exception 3-3)
  2. tour Deuce (score 3-3)
  3. joueur 1 gagnant (score 4- [012 ] ou marquer 5-3)
  4. joueur 2 gagnant (score [012] -4 ou marquer 3-5)
  5. joueur diantre 1 avantage (score 4-3)
  6. joueur deuce 2 avantage (score 3- 4)
+0

ouais ok mais comment puis-je coder ceci dans une boucle qui fonctionne? –

+0

Deuce est également à 4-4, 5-5, etc. – PaulMcG

+0

@ Paul McGuire: ce n'était pas nécessaire, quand le score est 4-4, il sera réinitialisé à 3-3 de sorte que vous n'avez pas besoin d'autres états distincts ou des conditions de vérification complexes. –