Le jeu de cartes☘
Important
On rappelle que l'entraînement à la programmation est indispensable pour apprendre à programmer...
Exercice 1☘
On veut représenter un jeu de cartes par les tuples (couleur, hauteur):
coeur = [ ('coeur', 1), ('coeur', 2), ..., ('coeur', 10), ('coeur', 11), ('coeur', 12), ('coeur', 13)]
(on a choisi 11, 12, 13 au lieu de valet, dame, roi).
- Écrire une fonction python spécifiée comme suit:
def couleur(couleur):
"""
couleur -- chaîne qui vaut 'coeur' ou 'carreau' ou 'trèfle' ou 'pique'
renvoie la liste des cartes de cette couleur.
"""
- Écrire une fonction python générant maintenant un jeu de cartes complet (les 4 × 13 cartes) sous forme d'une liste.
Exercice 2☘
On dispose d'un jeu de cartes comme défini par la fonction de l'exercice précédent.
Les joueurs commencent avec un jeu personnel représenté par une liste vide.
jeu = jeu = jeu_de_cartes() # construction du jeu par la fonction de l'exercice précédent
antoine = [] # jeu initial du joueur Antoine
basile = [] # jeu initial du joueur Basile
- Écrire une fonction python spécifiée comme suit:
from random import randint
def distribue_une_carte(joueur):
"""
joueur -- liste des cartes d'un joueur
tire une carte au hasard dans le jeu de cartes, la supprime du jeu de cartes,
l'ajoute au jeu du joueur.
"""
Important
On utilisera la méthode pop du type list.
>>> tab = [ 'a', 'b', 'c', 'd', 'e']
>>> lettre = tab.pop(2)
>>> lettre
'c'
>>> tab
['a', 'b', 'd', 'e']
On voit sur cet exemple que, tab désignant une liste python et i un indice de cette liste, l'instruction:
valeur = tab.pop(i)
- récupère la valeur de tab[i] et la "stocke" dans la variable valeur.
- efface la valeur tab[i] de la liste (tous les éléments de tab qui ont un indice supérieur à i voient alors leur indice décrémenter d'une unité).
Exercice 3☘
On poursuit l'exercice précédent.
En utilisant la fonction de distribution d'une carte à un joueur définie précédemment, écrire un corps possible pour la fonction suivante:
def distribue_jeu(n, joueur1, joueur2):
"""
n -- nombre de cartes à distribuer à chaque joueur.
joueur1 -- liste des cartes du joueur 1
joueur2 -- liste des cartes du joueur 2
distribue n cartes à chaque joueur.
"""
La distribution se fera en alternant les joueurs: une carte au joueur 1, une carte au joueur 2, une carte au joueur 1, une carte au joueur 2, ...
Exercice 4☘
Le jeu peut maintenant être joué avec plus de deux joueurs.
On doit donc modifier la fonction précédente de distribution pour le cas de k joueurs.
Compléter la fonction suivante:
def distribue_jeu(n, liste_joueurs):
"""
n -- nombre de cartes à distribuer à chaque joueur.
liste_joueurs -- liste des listes des cartes des joueurs
distribue n cartes à chaque joueur.
"""
Exercice 5☘
Écrire un code pour la fonction suivante:
def filtre(jeu, hauteur):
"""
hauteur: entier entre 1 et 13
jeu: une liste de cartes
renvoie la liste des cartes de hauteur "hauteur" présentes dans jeu.
"""
Exemple ci-dessous (en utilisant la fonction de création du jeu déjà définie dans les exercices précédents): comment obtenir tous les as?
>>> jeu_complet = jeu_de_cartes()
>>> filtre(jeu_complet, 1)
[('coeur', 1), ('carreau', 1), ('trèfle', 1), ('pique', 1)]