Exercice 1 - Partie A · Bac Numérique et Sciences Informatiques Amérique du Nord 2026 (jour 1)

Thème : Programmation orientée objet : classes, attributs, méthodes · Tiré du sujet Jour 1 (2026)

Énoncé

Exercice 1 (6 points)

Cet exercice porte sur la programmation orientée objet et la récursivité.

Le jeu puissance 4 se joue à deux joueurs dans une grille de 6 lignes et 7 colonnes. Une couleur de pion, blanc ou noir, est attribuée à chaque joueur. Les joueurs jouent à tour de rôle. Lorsque c’est à son tour de jouer, un joueur choisit une colonne dans laquelle il introduit un pion de sa couleur. La grille de jeu est placée verticalement de sorte que le pion introduit tombe dans la colonne choisie et bute soit sur le bas de la grille, soit sur un autre pion déjà placé. Le but du jeu pour chaque joueur est d’aligner au moins quatre pions de sa couleur dans n’importe quelle direction (horizontalement, verticalement, en diagonale). Le premier à y parvenir a gagné.

Le but de l’exercice est d’implémenter un algorithme appelé min-max permettant à un joueur d’optimiser ses chances de victoire selon un principe simple: à chaque coup possible du joueur, on associe un score calculé en fonction de tous les futurs coups possibles, les siens, mais aussi ceux de son adversaire. Le coup qui a le meilleur score est celui qu’il faut choisir.

Pour simuler l’ensemble des coups possibles, on utilise un arbre dont les nœuds correspondent à un coup. Chaque fils d’un nœud correspond à une possibilité de coup suivant le coup considéré.

Partie A: grille de jeu et score associé

Dans la suite, les deux joueurs seront notés 1 et 2.

Pour gérer la grille de jeu, on va écrire une classe Grille. L’unique attribut d’un objet instance de la classe Grille est un tableau nommé grille de 6 lignes et 7 colonnes, représenté en Python par une liste de listes. Ce tableau contient des entiers qui ne peuvent prendre que trois valeurs: 0, 1 ou 2. La valeur 0 signifie que la case du jeu correspondante est vide. La valeur 1 qu’un pion du joueur 1 se trouve dans la case et la valeur 2 qu’un pion du joueur 2 s’y trouve. La convention de numérotation des lignes et des colonnes dans le tableau est présentée sur la figure 1.

Partie A: grille de jeu et score associé

Dans la suite, les deux joueurs seront notés 1 et 2.

Pour gérer la grille de jeu, on va écrire une classe Grille. L'unique attribut d'un objet instance de la classe Grille est un tableau nommé grille de 6 lignes et 7 colonnes, représenté en Python par une liste de listes. Ce tableau contient des entiers qui ne peuvent prendre que trois valeurs: 0, 1 ou 2. La valeur 0 signifie que la case du jeu correspondante est vide. La valeur 1 qu'un pion du joueur 1 se trouve dans la case et la valeur 2 qu'un pion du joueur 2 s'y trouve. La convention de numérotation des lignes et des colonnes dans le tableau est présentée sur la figure 1.

1.

Écrire la méthode __init__(self) de la classe Grille qui définit l'attribut grille comme un tableau rempli de 0.

2.

Recopier et compléter les lignes 4, 6, 7 et 9 de la méthode joue(self, colonne, joueur) suivante de la classe Grille. Son but est de tenter de placer un pion du joueur joueur dans la colonne dont le numéro est colonne. Si le coup est possible, c'est-à-dire si la colonne ne contient pas déjà six pions, alors le pion est placé dans la grille au bon endroit et la fonction renvoie True. Si le coup n'est pas possible, la fonction renvoie simplement False.

Remarque importante: la recherche d'une case où placer le pion se fait de bas en haut.

1 def joue(self, colonne, joueur):

2 ligne = 5 # on part de la rangée la plus basse

3 while ligne!=-1 and self.grille[ligne][colonne]!=0:

4 ligne =...

5 if ligne != -1:

6 self.grille[ligne][colonne] =...

7 return...

8 else:

9 return...

3.

Voici un exemple de tableau représentant la grille de jeu obtenue à la fin du troisième coup:

[[0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 1, 0, 0, 0],

[0, 0, 1, 2, 0, 0, 0]]

Écrire le code Python nécessaire pour créer cette grille de jeu en utilisant uniquement les méthodes de la classe Grille. Elle sera stockée dans une variable jeu1.

À présent, on va écrire une méthode de la classe Grille qui associe à une grille un score en fonction des pions déjà placés.

On suppose qu'on a déjà écrit une fonction valeur_case(ligne, colonne) qui renvoie le nombre d'alignements de quatre cases contenant la case (ligne, colonne). Par exemple, l'appel valeur_case(0, 1) renvoie 4. En effet, il y a quatre alignements de quatre cases qui contiennent la case (0, 1) et qui sont représentés à la figure 2.

Le score d'une grille est calculé en additionnant les valeurs de toutes les cases occupées par un pion du joueur 2 et en soustrayant les valeurs de toutes les cases occupées par un pion du joueur 1, la valeur d'une case étant obtenue à l'aide de la fonction valeur_case.

4.

Donner le score associé à la grille de jeu jeu1 donnée à la question 3 en expliquant bien le calcul effectué.

5.

Écrire la méthode score(self) qui renvoie le score associé à la grille de jeu représentée par l'objet.

Énoncé: Exercice 1 - Partie A · Bac Numérique et Sciences Informatiques Amérique du Nord 2026 (jour 1)

Corrigé

Corrigé proposé par AprenAI (non officiel)

1. Écrire la méthode __init__(self) de la classe Grille qui définit l'attribut grille comme un tableau rempli de 0.

Réponse : ```python def __init__(self): self.grille = [[0 for _ in range(7)] for _ in range(6)] ```

2. Ligne 4 : ligne = ...

Réponse : ligne - 1

2. Ligne 6 : self.grille[ligne][colonne] = ...

Réponse : joueur

2. Ligne 7 : return ...

Réponse : True

2. Ligne 9 : return ...

Réponse : False

Les réponses des 4 questions restantes et l’explication pas à pas sont réservées aux membres Premium. Premium

Résous-le ici : correction automatique, indices et corrigé détaillé.

Exercice 2 - Questions 9 à 11 · Amérique du Nord 2026 (jour 1) ›

Plus d’exercices de Programmation orientée objet : classes, attributs, méthodes