# ############################################################################ # # Programme : Puissance 4 # Version : 2 # Date : 27 avril 2020 # Interpréteur : Python 3.2 # Environnement de développement : EduPython 2.5.3.0 # Auteur : Jean-Christophe MICHEL # # ---------------------------------------------------------------------------- # # Dans cette version 2 : # - pour jouer un pion les joueurs doivent cliquer à tour de rôle dans une colonne # - pour recommencer une partie il faut appuyer sur la touche Echap # - pour quitte immédiatement le programme il faut fermer la fenêtre de la tortue # - la grille pleine est détectée # - c'est toujours le joueur ROUGE qui commence # # ############################################################################ from turtle import * # ############################################################################ # D E C L A R A T I O N D E S V A R I A B L E S G L O B A L E S # ############################################################################ # Structure de donnée mémorisant la grille : une liste à 2 dimensions (6 lignes et 7 colonnes) contenant : # - un 0 si la case est vide # - un 1 si un pion ROUGE est dans la case # - un 2 si un pion BLEU est dans la case grille=[7*[0], 7*[0], 7*[0], 7*[0], 7*[0], 7*[0]] # liste_colonne mémorise le nombre de pions dans chacune des colonnes liste_colonne=7*[0] # joueur_courant indique le prochain joueur qui doit jouer : 1 pour ROUGE et 2 pour BLEU joueur_courant=1 # ############################################################################ # D E C L A R A T I O N D E S F O N C T I O N S # ############################################################################ # ############################################################################ # La fonction afficher_grille() affiche la grille sur la sortie standard def afficher_grille(): for i in range(6): print(grille[i]) # affiche le repère des colonnes sous la grille : print('\n 0 1 2 3 4 5 6') # ############################################################################ # La fonction grille_pleine() teste si la grille est pleine (aucun 0 dans la liste grille) def grille_pleine(): b_plein=True for i in range(6): for j in range(7): if grille[i][j]==0: # retourne False si au moins une case est vide b_plein=False return b_plein # ############################################################################ # La fonction jouer(x,y) est appelé si on clique gauche sur le point (x,y) def jouer(x,y): # utilise la variable globale joueur_courant : global joueur_courant # teste si la grille est pleine : if grille_pleine(): print("Fin de la partie : la grille est pleine. Appuyez sur Echap pour recommencer une nouvelle partie.") else: # analyse la zone cliquée pour déterminer la colonne : if x_base