# ============================================================================== # Projet Simon Et Yohan # ============================================================================== # Nom du projet: Colonne Minée # Dev: Simon Et Yohan # Date: Mai 2025 # Simon : -Création de l'arbre aléatoire pour chaque joueur # - Création des joueur # - Système tour par tour # - Détection si un joueur touche sur la bonne case ou non # - Fonction qui permet de réinitialiser l'interface graphique # - Implémentation de text dans le jeux # Yohan : -Création de l'interface graphique avec la tortue # - Création des pièces déterminant où se trouve le joueur # - Déplacement des pions # - Supression des pions lorsqu'un joueur clique sur la mauvaise case # - Fonction qui permet de réinitialiser l'interface graphique # - Implémentation de text dans le jeux # ============================================================================== # IMPORTATION DES MODULES # ============================================================================== from turtle import * import random import time # ============================================================================== # LOGISTIQUE DE L'ARBRE # ============================================================================== class Arbre: def __init__(self, val): self.valeur = val self.gauche = None self.droit = None def ajout_gauche(self): self.gauche = Arbre('g') def ajout_gauche2(self): self.gauche = Arbre('vg') def ajout_droit(self): self.droit = Arbre('d') def ajout_droit2(self): self.droit = Arbre('vd') def parcours_prefixe(self): # parcours en profondeur dans l'ordre PREFIXE (RGD) : print(self.valeur,' ',end='') # affiche la racine if self.gauche: self.gauche.parcours_prefixe() # traite récurcivement le SAG if self.droit: self.droit.parcours_prefixe() # traite récurcivement le SAD def taille(self): tg = self.gauche.taille() if self.gauche else 0 td = self.droit.taille() if self.droit else 0 return 1 + tg + td def parcours_prefixe(arbre): # parcours en profondeur dans l'ordre PREFIXE : if arbre: print(arbre.valeur,' ',end='') parcours_prefixe(arbre.gauche) parcours_prefixe(arbre.droit) # ============================================================================== # CREATION JOUEUR 1 # ============================================================================== p1=random.randint(0,1) if p1 == 0: Player1 = Arbre('g') else: Player1 = Arbre('d') emplacement_player1 = Player1 for i in range(8): a=random.randint(3,4) if a == 3: emplacement_player1.ajout_gauche() emplacement_player1.ajout_droit2() emplacement_player1 = emplacement_player1.gauche if a == 4: emplacement_player1.ajout_droit() emplacement_player1.ajout_gauche2() emplacement_player1 = emplacement_player1.droit # ============================================================================== # CREATION JOUEUR 2 # ============================================================================== p2=random.randint(0,1) if p2 == 0: Player2 = Arbre('g') else: Player2 = Arbre('d') emplacement_player2 = Player2 for i in range(8): b=random.randint(3,4) if b == 3: emplacement_player2.ajout_gauche() emplacement_player2.ajout_droit2() emplacement_player2 = emplacement_player2.gauche if b == 4: emplacement_player2.ajout_droit() emplacement_player2.ajout_gauche2() emplacement_player2 = emplacement_player2.droit # ============================================================================== # CREATION DE LA GRILLE # ============================================================================== setup(1600,1000,0,0) pensize(5) speed(0) def quadrillage(ligne,x,y): #lignes up() goto(x,y) down() for i in range (ligne): up() goto(x,y) down() y=y-100 setheading(0) fd(400) #colonne x=700 for i in range (3): up() goto(x,-450) down() x=x-200 setheading(90) fd(900) x=-700 for i in range (3): up() goto(x,-450) down() x=x+200 setheading(90) fd(900) def pion1(): pencolor('black') up() goto(-800,400) down() write("\u265F",font=('Arial,Unicode MS',69)) def pion2(): pencolor('black') up() goto(700,400) down() write("\u265F",font=('Arial,Unicode MS',69)) def erase (x,y,x1,y1): setheading(90) up() goto(x,y) down() begin_fill() color('white') for i in range (4): fd(90) rt(90) end_fill() up() goto(x1,y1) down() begin_fill() color('white') for i in range (4): fd(90) rt(90) end_fill() def erase_text(): up() goto(-250,-10) setheading(0) down() begin_fill() color('white') for i in range(2): fd(500) left(90) fd(50) left(90) end_fill() hideturtle() # ============================================================================== # DEFINITION DES VARIABLES DES DEUX JOUEURS # ============================================================================== tour_p1= True tour_p2= False Emplacement_joueur1 = Player1 Niveau_joueur1=1 Emplacement_joueur2 = Player2 Niveau_joueur2=1 # ============================================================================== # RESET DE LA GRILLE # ============================================================================== def effacer_grille(x,y): global Emplacement_joueur1 global Niveau_joueur1 global Emplacement_joueur2 global Niveau_joueur2 global tour_p1 global tour_p2 reset() pensize(5) speed(0) quadrillage(10,-700,450) quadrillage(10,300,450) Emplacement_joueur1 = Player1 Niveau_joueur1 = 1 Emplacement_joueur2 = Player2 Niveau_joueur2=1 tour_p1=True tour_p2=False pion1() pion2() up() hideturtle() # ============================================================================== # ============================================================================== # PLAYER 1 : # ============================================================================== # ============================================================================== def cliquer_gauche(x,y): global tour_p1 global tour_p2 global Niveau_joueur1 global Emplacement_joueur1 up() goto(x,y) # ============================================================================== # COLONE GAUCHE PLAYER 2 : # ============================================================================== if (-700