Devoir POO : puissance 4

Durée 40′

Consignes

La rédaction sera intégralement faite sur un seul fichier nommé DS2_nom_prenom.py(en remplaçant nom et prénom par vos propres noms et prénoms !!!).

Le fichier-copie doit être sauvegardé régulièrement sur votre espace « Mes Documents » du réseau pédagogique.

En fin d’épreuve, ce fichier-copie devra être téléversé sur le serveur en utilisant le formulaire en bas de cette page, ou bien en cliquant sur Mes Fichiers en haut à droite.

  • Calculatrice interdite
  • Consultation de pages Web interdite (hormis cette page !)
  • Feuille de brouillon vivement recommandée

« Petit » conseil : lire les consignes avec beaucoup de soin… (et les relire autant de fois que nécessaire !)

Merci de patienter et d’attendre le feu vert du professeur avant d’aller plus loin….

 

 

 

 

 

 

 

 

 

L’objectif de ce devoir est de réaliser un jeu de puissance 4.

 

Définir en Python une classe GrilleP4 dont le constructeur possède 2 paramètres utilisés pour créer 2 attributs aux instances de cette classe : nb_l , et nb_c de type entiers, et signifiant les nombres de lignes et de colonnes de la grille de Puissance 4.

 

Ajouter à cette définition de classe un attribut privé __g : une liste initialement vide. Écrire, dans le constructeur de la classe, à l’aide de deux boucles for ... in ... imbriquées, un algorithme permettant d’initialiser la grille comme une tableau de nb_l lignes et nb_c colonnes. Les cellules du tableau contiennent initialement un unique caractère "⚪" (à copier/coller dans le code).

 

Créer une instance de la classe GrilleP4 nommée p et de dimensions égales à celle de la grille sur l’image donnée plus haut.

 

 

L’attribut __g de la classe GrilleP4est privé. Seules les méthodes de cette classe ont le droit d’y accéder (on ne peut par exemple pas faire print(p.__g) après avoir instancié un objet p qui vient d’être créé).

Créer une méthode de représentation ( __repr__) qui permet d’afficher l’attribut __g de la grille à l’aide d’une fonction print.

Rappel : __repr__ n’attend qu’un seul argument (l’objet lui-même) et doit impérativement renvoyer une chaîne de caractères,
et n’importe quelle variable peut être convertie en chaîne de caractères à l’aide de la fonction str.

Par exemple, après l’instanciation de l’objet p créé à la question 3 :

print(p)

doit afficher :

[['⚪', '⚪', '⚪', '⚪', '⚪', '⚪', '⚪'], ['⚪', '⚪', '⚪', '⚪', '⚪', '⚪', '⚪'], ['⚪', '⚪', '⚪', '⚪', '⚪', '⚪', '⚪'], ['⚪', '⚪', '⚪', '⚪', '⚪', '⚪', '⚪'], ['⚪', '⚪', '⚪', '⚪', '⚪', '⚪', '⚪'], ['⚪', '⚪', '⚪', '⚪', '⚪', '⚪', '⚪']]

 

Si vous ne parvenez pas à obtenir ce résultat, vous pouvez néanmoins continuer l’exercice en donnant manuellement cette valeur initiale à l’attribut __g
dans le constructeur …

self.__g = [['⚪', '⚪', '⚪', '⚪', '⚪', '⚪', '⚪'], ['⚪', '⚪', '⚪', '⚪', '⚪', '⚪', '⚪'], ['⚪', '⚪', '⚪', '⚪', '⚪', '⚪', '⚪'], ['⚪', '⚪', '⚪', '⚪', '⚪', '⚪', '⚪'], ['⚪', '⚪', '⚪', '⚪', '⚪', '⚪', '⚪'], ['⚪', '⚪', '⚪', '⚪', '⚪', '⚪', '⚪']]

 

(bonus) Modifier la méthode de représentation de sorte que l’affichage soit plus proche de la réelle grille de puissance 4.

Par exemple :

print(p)

doit afficher :

⚪⚪⚪⚪⚪⚪⚪
⚪⚪⚪⚪⚪⚪⚪
⚪⚪⚪⚪⚪⚪⚪
⚪⚪⚪⚪⚪⚪⚪
⚪⚪⚪⚪⚪⚪⚪
⚪⚪⚪⚪⚪⚪⚪

 

Il faut à présent pouvoir mettre dans cette grille des pions colorés, représentés par les caractères "🔴" et "🟡" (à copier/coller dans le code). Mais avant d’ajouter un pion dans un colonne, il faut pouvoir connaître le nombre de pions qu’elle contient déjà.

Ajouter une méthode est_vide qui attend 2 paramètres entiers l et c (en plus de l’objet lui même) désignant les indices d’une ligne et d’une colonne de la grille, et qui renvoie True si la case est vide (contient le caractère "⚪") et False dans le cas contraire.

 

Ajouter une méthode nbr_pions qui attend un paramètre c , de type entier et désignant l’indice d’une colonne. Cette méthode doit retourner le nombre de pions déjà présents dans la colonne.

Par exemple la colonne d’indice 2 de l’exemple donné par l’image plus haut comporte 4 pions.

 

(bonus) Ajouter une méthode placer_pion qui attend 2 paramètres, un entier c désignant l’indice d’une colonne et p désignant un pion (un caractère "🔴" ou "🟡" ) et qui place un pion dans la colonne c de la grille. Si la colonne est déjà pleine, la méthode retourne False, sinon elle renvoie True.

 

Soit la classe Joueur définie par :

class Joeur:
    def __init__(self, pseudo, identifiant, pion):
        self.pseudo = pseudo            # str
        self.identifiant = identifiant  # int
        self.pion = pion                # str : "🔴" ou "🟡"
Créer deux instances de la classe Joueur nommées j1 et j2 telles que :
  • j1 : pseudo « blaise », identifiant 0 et pion rouge
  • j2 : pseudo « pascal », identifiant 1 et pion jaune

 

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *