Effectivement le truc propre serait de faire des classes.
Après si vous ne maitrisez pas les classes vous pouvez très bien écrire une fonction :
def score_tour(gain, preneur, pari, annonce=0):
où preneur n'est pas une chaine (ie le nom du joueur) mais la position du joueur dans la liste des joueurs, et qui retournera le tableau des score du tour.
Donc si par exemple j'appelle
score_tour(2, 1, 'garde', 0)
ca retourne:
( (25+2)*2 + 0 = 54 points par tête )
Après dans votre programme, vous initialiser un tableau de 0. A chaque tour vous appelez score_tour, vous en récupérez le résultat, et vous l'ajouter au tableau que vous avez initialisé à 0. Et donc ce tableau fera ainsi le cumul des scores.
Quelquesoit la manière d'implémenter, il faut :
- éviter le mot global
- séparer la gestion d'un tour, de celle d'une partie composée de plusieurs tours
Après là j'y vois plusieurs limitations :
- Comment prenez vous en compte le nombre de joueur ? D'autant plus qu'à 5 joueurs il y a un joueur appelé, donc ca change le prototype de votre fonction ...
- Pour les annonces, là j'ai mis le montant de l'annonce. Mais techniquement ce serait mieux de pouvoir entrer le type d'annonce, qui l'annonce, et éventuellement dans une liste, car il peut y avoir plusieurs annonce (dans le même camp ou pas, donc faut gérer si elle se cumule ou se compense partiellement). Typiquement misère en défense, poignée + petit au bout en attaque.
- Je ne sais pas comment comptez vous utiliser votre programme, mais si pour compter les points il faut à chaque fois taper des lignes de code, ce n'est pas vraiment intéressant (user-friendly). Il serait peut être plus judicieux d'avoir un code que vous lancez au début de votre partie de tarot, et après avec la fonction input, vous demandez à l'utilisateur s'il continue à jouer :
si oui, le programme pose les questions l'une après l'autre: qui prend, quel contrat, fait de combien, y a t il des annonces, si oui par qui et laquelle puis y en a t il une autre et on boucle jusqu'à tant que l'utilisateur réponde qu'il n'y ait plus d'annonce à enregistrer.
si non, le programme est terminée
J'avais programmé ça sur ma calculatrice, une TI-82 quand j'étais au lycée, donc en python c'est tout à fait réalisable. Après en python il va y avoir plusieurs façon de procéder, mais en effet c'est un bon exercice que vous vous êtes trouvez là pour débuter. Et après si vous allez plus loin dans l'apprentissage python, votre programme pourra évoluer, et s'enrichir d'une interface graphique Tkinter par exemple.
Partager