# ############################################################################## # # Ce programme montre un exemple de jeu Mastermind programmé en Python # # Il utilise les possibilités interactives de la tortue # # Date : 31 mars 2025 # Interpréteur : Python 3.2 # Environnement de développement : EduPython 2.5.3.0 # Auteur : Jean-Christophe MICHEL # Site ressource : http://python.gecif.net/ # # ############################################################################## from turtle import * # ============================================================================== # D é f i n i t i o n d e s f o n c t i o n s : # ============================================================================== def afficher_grille(largeur,hauteur,pos_x,pos_y): # dessine une grille de dimension largeurxhauteur au point de coordonnées (pos_x,pos_y) up() goto(pos_x,pos_y) down() setheading(0) # trace les hauteur+1 traits horizondaux : for i in range(hauteur+1): up() x=pos_x y=pos_y+40*i goto(x,y) down() forward(40*largeur) left(90) # trace les largeur+1 traits verticaux : for i in range(largeur+1): up() x=pos_x+40*i y=pos_y goto(x,y) down() forward(40*hauteur) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - def dessiner_pion(pos_x,pos_y,couleur): # dessine un pion en forme d'un disque plein up() goto(pos_x,pos_y) down() color(couleur) begin_fill() circle(14) end_fill() # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - def afficher_couleurs(pos_x,pos_y): # affiche le 8 couleurs disponibles dans la grille 4x2 x=pos_x+35 y=pos_y+20 dessiner_pion(x,y,couleurs[0]) x+=40 dessiner_pion(x,y,couleurs[1]) x+=40 dessiner_pion(x,y,couleurs[2]) x+=40 dessiner_pion(x,y,couleurs[3]) x=pos_x+35 y+=40 dessiner_pion(x,y,couleurs[4]) x+=40 dessiner_pion(x,y,couleurs[5]) x+=40 dessiner_pion(x,y,couleurs[6]) x+=40 dessiner_pion(x,y,couleurs[7]) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - def cliquer_gauche(x,y): # on a cliqué gauche sur le point de coordonnées (x,y) global prochain_x,prochain_y,ligne c=int((x-60)//40) # c est un entier entre 0 et 9 l=int((y+200)//40) # les lignes sont également numérotées de 0 à 9 """print("colonne : %d " % c) print("ligne : %d\n" % l) print(prochain_x) print(prochain_y)""" if not(c in range(0,4) and l in range(0,2)): print("Vous avez cliqué en dehors des 8 couleurs") elif ligne>=10: print("STOP : la grille est pleine") else: dessiner_pion(prochain_x,prochain_y,couleurs[c+4*l]) prochain_x+=40 if prochain_x==255: color('black') up() goto(0,230) write("2 : cliquez gauche sur une des 8 couleurs pour remplir une proposition",align='center') prochain_x=-200+35 prochain_y=-200+20 if prochain_x==-5: prochain_x=-200+35 prochain_y+=40 ligne+=1 # ============================================================================== # P r o g r a m m e p r i n c i p a l : # ============================================================================== # Initialisation de la Tortue : speed(0) hideturtle() title("Mastermind") setup(550,550) # affiche les messages texte dans la fenêtre de la tortue : up() goto(0,250) write("1 : cliquez gauche sur une des 8 couleurs pour remplir la combinaison secrète",align='center') goto(0,210) write("Echap : quitter",align='center') goto(90,165) write("Combinaison secrète :") goto(90,-115) write("Choix des 8 couleurs :") goto(-182,-220) write("Grille des 10 propositions") # dessine la grille principale : afficher_grille(4,10,-200,-200) # dessine la grille avec les 8 couleurs : afficher_grille(4,2,60,-200) # dessine la grille contenant la combinaison secrète : afficher_grille(4,1,60,120) # définit les 8 couleurs dans une liste : couleurs=['red','green','blue','pink','yellow','orange','black','purple'] # affiche le 8 couleurs disponibles dans la grille 4x2 : afficher_couleurs(60,-200) # coordonnées du prochain pion à dessiner : prochain_x=60+35 prochain_y=120+20 # compte le nombre de lignes pleines dans la grilles des propositions : ligne=0 # fonctions à lancer si on clique avec un bouton de la souris : onscreenclick(cliquer_gauche) # gauche # fonction à lancer si on appuie sur une touche : onkeypress(bye,"Escape") # lance le gestionniare d'évènement : listen() # lance la boucle principale : done() # ============================================================================== # F i n d u p r o g r a m m e # ==============================================================================