Aller au contenu

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.
    """
Une réponse

Ce fichier ipynb propose un code possible.

Version html du fichier:

  • Écrire une fonction python générant maintenant un jeu de cartes complet (les 4 × 13 cartes) sous forme d'une liste.
Une réponse

Ce fichier ipynb propose un code possible.

Version html du fichier:

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é).
Un code possible

Ce fichier ipynb propose un code possible.

Version html du fichier:

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, ...

Un code possible

Ce fichier ipynb propose un code possible.

Version html du fichier:

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.
    """
Un code possible

Ce fichier ipynb propose un code possible.

Version html du fichier:

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)]
Un code possible

Ce fichier ipynb propose un code possible.

Version html du fichier: