Consignes pour les projets :

Numérique et sciences informatiques

start up

Projet 8 : Puissance 4

Description du projet

Puissance 4 (appelé aussi 4 en ligne) est un jeu de stratégie dont “le but est d'aligner 4 pions sur une grille comptant 6 rangées et 7 colonnes.

Chaque joueur dispose de 21 pions d'une couleur (par convention, jaune ou rouge).

Tour à tour les deux joueurs placent un pion dans la colonne de leur choix, le pion coulisse alors jusqu'à la position la plus basse possible dans la dite colonne à la suite de quoi c'est à l'adversaire de jouer. Le vainqueur est le joueur qui réalise le premier un alignement (horizontal, vertical ou diagonal) d'au moins quatre pions de sa couleur. Si, alors que toutes les cases de la grille de jeu sont remplies, aucun des deux joueurs n'a réalisé un tel alignement, la partie est déclarée nulle.” (extrait de Wikipédia).

Dans la suite, les deux joueurs seront appelés le joueur_1 et joueur_2.

Cahier des charges

Le joueur et son adversaire, sont des humains, il devront à tour de rôle entrer avec la souris la colonne où ils désirent placer leur pion.

Voici, ci-dessous, une grille du célèbre jeu Puissance 4.
La grille est modélisée, par un tableau de même taille, 6 lignes par 7 colonnes. On a choisi de coder :

  • 0 : une case vide
  • 1 : un pion rouge
  • 3 : un pion jaune

Ce tableau ne comportant aucun cadre, ni trait de ligne ou de colonne, s’appelle « matrice ».

puissance_4
La grille de jeu est donc une variable de type list contenant 6 listes de 7 valeurs :

Pour repérer une valeur dans cette matrice, il faut utliser son numéro de ligne et son numéro de colonne : grille[numéro_ligne][numéro_de_colonne]
Les lignes et colonnes sont numérotées à partir de 0.
Exemple :
Pour faire référence à la valeur en haut à gauche (1ère ligne,1ère colonne) : grille[0][0] pour appeler la valeur de la 4e ligne, 2e colonne : grille[3][1]

Vérifier votre compréhension des lignes et colonne avec la grille suivante pour grille[3][2], grille[4][5] avec thonny.

grille=[[0, 0, 0, 0, 0, 0, 1],
        [0, 0, 0, 0, 0, 1, 3],
        [0, 1, 0, 0, 0, 3, 1],
        [0, 3, 1, 0, 0, 1, 3],
        [1, 3, 3, 0, 0, 3, 1],
        [3, 1, 1, 0, 3, 1, 3]]

Le programme fournit permet de jouer mais ne décèle pas les victoires. Votre travail consiste à rendre fonctionnel le puissance 4

Télécharger, dezipper et tester le programme projet_puissance_4.zip.

Pour ce projet, il est nécessaire d'ajouter le module pygame à thonny.

Le code du programme :

Entraînement 1 :

Compléter la fonction quatre_a_la_suite_horizontal() prédéfinie dans le programme (nom et documentation) pour tester l'alignement horizontal.

def quatre_a_la_suite_horizontal(grille):
    """
    décèle un alignement horizontal de 4 pions de même couleur
    entrée : grille, un tableau d'au moins 4 colonnes
    return : True si 4 pions de même couleur sont alignés horizontalement
             False sinon
    """

Entraînement 2 :

Compléter la fonction quatre_a_la_suite_vertical() prédéfinie dans le programme (nom et documentation) pour tester l'alignement vertical.

def quatre_a_la_suite_vertical(grille):
    """ décèle un alignement vertical de 4 pions de même couleur
    entrée : grille, un tableau d'au moins 4 lignes
    return : True si 4 pions de même couleur sont alignés verticalement
             False sinon
    """

Entraînement 3 :

Compléter la fonction quatre_a_la_suite_oblique_montant() prédéfinie dans le programme (nom et documentation) pour tester l'alignement oblique montant.

def quatre_a_la_suite_oblique_montant(grille):
    """ décèle un alignement oblique montant de 4 pions de même couleur
    entrée : grille
    return : True si 4 pions de même couleur sont alignés
             False sinon
    """

Entraînement 4 :

Compléter la fonction quatre_a_la_suite_oblique_descandant() prédéfinie dans le programme (nom et documentation) pour tester l'alignement oblique descendant.

def quatre_a_la_suite_oblique_descendant(grille):
    """ décèle un alignement oblique descendant de 4 pions de même couleur
    entrée : grille
    return : True si 4 pions de même couleur sont alignés
             False sinon
    """

Si vos fonctions font le travail alors vous aurez le plaisir de jouer à puissance 4 !

Amélioration

Amélioration 1 :

Ajouter une fonction qui décèle la fin de partie en cas d'ex aequo avec une grille complète.

Amélioration 2 :

Le joueur est un humain et son adversaire est une intelligence artificielle programmée par vos soins.

Amélioration 3 :

Joker : chaque joueur dispose deux jockers permettant de supprimer une ligne ou une colonne de la grille. Quand c'est à lui de jouer, le joueur peut taper la commande jokerligneX ou jokercolonneY (où X et Y sont le numéro de ligne ou de colonne à supprimer) ou avec la souris.