ALGORITHMIQUE ET PROGRAMMATION 1Synthèse : Puissance 4 (en Python)
Conseil : Lire attentivement les questions suivantes et ébaucher une solution au brouillon avant
de commencer la rédaction.
Exercice 1 : Préparation du jeu
Le jeu « puissance 4 » se joue sur une grille verticale de six lignes et sept colonnes avec 21 pions
rouges et 21 pions jaunes.
Pour faciliter les calculs ultérieurs, nous allons ajouter une bordure à cette grille. Ses di-
mensions sont donc de huit lignes et neuf colonnes. Bien entendu, ces cases supplémentaires ne
peuvent pas contenir de pions (qu’ils soient jaunes ou rouges). Elles sont donc toujours vides.
Définir les types nécessaires pour représenter la grille de jeu.
Solution :
1# CONSTANTES
2TITRE = "PUISSANCE 4"
3NB_LIGNES = int(6) # nb de lignes de l’aire de jeu
4NB_COLONNES = int(7) # nb de colonnes de l’aire de jeu
5NB_ALIGNES_GAGNANT = int(4) # nb de pions alignés pour gagner
6NB_JOUEURS = int(2) # Nombre de joueurs dans une partie
7VIDE = 0 ; ROUGE = 1 ; JAUNE = 2 # type case grille (et couleur des joueurs)
8SYMBOLE_COULEUR = (" ","*","o") # tuple correspondant aux 3 couleurs ci-dessus
9
10 # Définition d’un joueur
11 class Joueur :
12 def __init__ (outSelf, inCouleur, inNom="") :
13 """
14 ROLE : initialise un nouveau joueur avec les paramètres indiqués
15 ENTREE inCouleur : ROUGE ou JAUNE
16 inNom : str # nom du joueur (si vide, c’est l’ordinateur)
17 SORTIE outSelf : Joueur
18 """
19 outSelf.couleur = int(inCouleur) # En fait, soit ROUGE, soit JAUNE
20 outSelf.nom = str(inNom) # Le nom du joueur
21 outSelf.ordinateur = bool(inNom=="") # Est-ce l’ordinateur ?
22 if inNom == "" : outSelf.nom = "Ordinateur"
23 outSelf.nb_victoires = int(0) # Nombre de victoires
24
25 # Définition des composants du jeu
26 class Jeu :
27 def __init__(outSelf,inNomJoueur1,inNomJoueur2="") :
28 """
29 ROLE : initialise la grille de jeu et les joueurs
30 ENTREE inNomJoueur1, inNomJoueur2 : str (si vide, c’est l’ordinateur)
31 SORTIE outSelf : Jeu
32 """
33 #1.grille de jeu avec une bordure supplémentaire sur les 4 bords
34 outSelf.grille = [] # liste vide => on va lui rajouter les lignes
35 for ligne in range(NB_LIGNES+2) : # 2 lignes de plus pour les bords
36 outSelf.grille.append(list((NB_COLONNES+2)*[0])) # 2 colonnes en +
37 #2.les 2 joueurs
38 Joueur1 = Joueur(ROUGE,inNomJoueur1)
39 Joueur2 = Joueur(JAUNE,inNomJoueur2)
40 outSelf.joueurs = (Joueur1, Joueur2)
Exercice 2 : Vider la grille
Pour commencer chaque partie, il faut commencer par vider la grille des jetons qu’elle contient.
Écrire un sous-programme qui réalise cette opération.
Exercices corrigés en Python, Semaine 4 c
INPT–PAD 2/10