Outils pour utilisateurs

Outils du site


nsi:jeu:puissance4

Ceci est une ancienne révision du document !



Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Puissance 4

Nous souhaitons créer un environnement permettant de jouer au puissance 4.

Les règles du jeu

  • Le jeu se joue sur une grille de 6 lignes et 7 colonnes.
  • Chaque joueur a une couleur de jeton – jaune et rouge en général.
  • Chaque joueur, a son tour, insère un jeton dans la colonne de son choix, si bien sûr elle n'est pas déjà pleine. Le jeton tombe dans la case libre la plus bas de la colonne.
  • Un joueur gagne quand il crée un alignement de 4 de ses jetons, horizontalement, verticalement ou en diagonale.
  • Si la grille est pleine et qu'il n'y a toujours aucun alignement, c'est un match nul.

Bibliothèque et principal

Nous devons distinguer deux aspects différents de notre programme :

  • D'un côté, nous avons besoin d'un ensemble de commande qui permettent l'évolution du jeu : insérer un jeton dans une colonne, décider à quelle ligne tombe le jeton, rechercher un alignement, etc. C'est la bibliothèque de fonction.
  • De l'autre il nous faut dérouler une partie. Demander au premier joueur de choisir une colonne, puis passer au second joueur, etc ; ou bien on pourrait faire jouer l'humain contre la machine ; ou encore faire jouer la machine contre la machine. Il s'agit du programme principal qui utilise les fonctions de la bibliothèque.

On va commencer par produire toute une liste de fonctions utiles. Chacune de ces fonctions réalisent un petit aspect du jeu. Ensuite, on pourra réaliser le programme principal.

Bibliothèque

Paramètres

Le jeu normal se joue sur 7 colonnes, 6 lignes et avec des alignements de 4. Nous allons donc trouver dans notre programme des 7, des 6 et des 4 à de nombreux endroits.

Supposons que l'on veuille essayer un puissance 4 sur une grille de 11×8. Cela ne devrait pas poser de difficultés pour un ordinateur. Pourtant, si nous avons écrit 7 et 6 un peu partout dans le programme, il nous faudra remplacer tous les 7 par 11 et tous les 6 par 8. C'est pénible…

Au lieu de cela on commence le programme en définissant des constantes :

"""
module fonctions_puissance4
"""

COLS = 7   # Nombre de colonnes de la grille
LIGNES = 6 # Nombre de lignes de la grille
TO_WIN = 4 # Nombre de jetons à aligner pour gagner

Format de la grille

Le programme a besoin de savoir à chaque instant l'état de la grille : que contient telle ou telle case ?

Il y a plusieurs possibilité.

  • Il serait naturel d'utiliser un tableau à deux dimensions : 7 lignes et 6 colonnes.
  • On peut aussi utiliser un tableau à 1 dimension contenant 7×6 cases.

Je préconise la seconde solution. Le tableau contiendra donc LIGNES * COLS cases. La case pour la ligne lig et la colonne col sera située à la position lig * COLS + col. Les numéros de lignes et colonnes commencent à 0, la ligne 0 est en haut.

On décide aussi que

  • une case vide contient le numéro 0,
  • une case contenant le jeton du joueur 1 contient 1,
  • une case contenant le jeton du joueur 2 contient 2,
  • et ainsi de suite – rien n'empêche d'envisager un jeu à plus de 2 joueurs !

Voici un exemple. Ici le joueur 1 a les jeton jaunes et le joueur 2 a les jetons rouges.

# Important : plutôt que d'écrire les valeurs 4, 7, 6 dans le programme, nous utiliserons des constantes. Cela rend le programme plus clair et permet, si on le souhaite, de modifier facilement les règles en passant à une grille plus grande par exemple.

nsi/jeu/puissance4.1630745254.txt.gz · Dernière modification : de goupillwiki