def prise_possible_direction(p, i, j, vertical, horizontal, joueur): if case_valide(p,i+vertical,j+horizontal)==False: # Si la case n'existe pas dans le plateau, on retourne False return False if get_case(p,i+vertical,j+horizontal)==0 or get_case(p,i+vertical,j+horizontal)==joueur: # Si la case est 0 ou la case est celle du joueur en paramètre, on retourne False return False vert=vertical # On rajoute une variable qui permettera une addition de la direction verticale horiz=horizontal # On rajoute une variable qui permettera une addition horizontale while case_valide(p,i+vertical+vert,j+horizontal+horiz): # Tant qu'on ne sort pas du plateau, on continue de vérifier if get_case(p,i+vertical+vert,j+horizontal+horiz)==joueur: # On additionne les directions pour aller dans une nouvelle ligne et/ou nouvelle colonne. Si on retombe sur nos pas avec un pion du même type, on retourne True return True # On retourne True si on retombe sur nos pas avec un pion de même couleur elif get_case(p,i+vertical+vert,j+horizontal+horiz)==0: # On utilise la même stratégie mais avec le besoin de vérifier si la case entre les deux pions de la même couleur ne soit pas vide (0) return False # On retourne False si le pion est vide else: vertical+=vert #On ré-additionne pour aller dans une nouvelle ligne et/ou colonne horizontal+=horiz return False
def mouvement_direction(plateau, i, j, vertical, horizontal, joueur): if prise_possible_direction(plateau, i, j, vertical, horizontal, joueur)==True: # On confirme que la prise de direction est possible vert=vertical+i # Vertical s'additionne avec la valeur i (de colonne) horiz=horizontal+j # Horizontal s'additionne avec la valeur j (de ligne) while get_case(plateau, vert, horiz)==pion_adverse(joueur): # Tant que la case est celle de l'adversaire... set_case(plateau, vert, horiz, joueur) # ...On change la valeur pour celle du joueur vert+=vertical horiz+=horizontal # On additionne pour arriver à la prochaine ligne et/ou colonne
def mouvement_valide(plateau, i, j, joueur): if get_case(plateau,i,j)==0: # On regarde immédiatement si la case est vide vertical=-1 # On initialise à -1 pour tout balayer while vertical<=1: horizontal=-1 # Même chose pour cette variable while horizontal<=1: if prise_possible_direction(plateau,i,j,vertical,horizontal,joueur)==True: # Nous regardons la prise possible de direction dans toutes les directions possibles return True # On retourne True si le mouvement est valide horizontal+=1 vertical+=1 return False # On retourne False si le mouvement n'est pas valide
def test_mouvement(): p=creer_plateau(4) print("PLATEAU 4 POUR FONCTION MOUVEMENT") mouvement(p,3,2,1) # On mange le pion en (2,2) et on place un pion (3,2) afficher_plateau(p) assert get_case(p,2,2)==1 # Le pion mangé est bien noir assert not get_case(p,2,2)==2 # Le pion mangé est noir donc cela est faux p=creer_plateau(6) print("PLATEAU 6 POUR FONCTION MOUVEMENT") mouvement(p,4,2,2) # On mange le pion en (3,2) et on place un pion (4,2) afficher_plateau(p) assert get_case(p,3,2)==2 # Le pion mangé est bien blanc assert not get_case(p,4,2)==1 # Le pion mangé est blanc donc cela est faux p=creer_plateau(8) print("PLATEAU 8 POUR FONCTION MOUVEMENT") mouvement(p,2,3,1) # On mange le pion en (3,3) et on place un pion (2,3) afficher_plateau(p) assert get_case(p,2,3)==1 # Le pion qu'on a inséré est bien noir assert not get_case(p,3,3)==2 # Le pion qu'on a retourné n'est plus noir mais blanc
def test_mouvement_direction(): p=creer_plateau(4) mouvement_direction(p,0,2,1,0,2) # On mange le pion blanc placé en (1,2) print("PLATEAU 4 POUR FONCTION MOUVEMENT_DIRECTION") afficher_plateau(p) assert get_case(p,2,1)==1 # La valeur de la case (2,1) est 1 assert not get_case(p,0,0)==2 # La valeur de la case (2,2) est 0 p=creer_plateau(6) mouvement_direction(p,4,2,-1,0,2) # On mange le pion noir placé en (3,2) print("PLATEAU 6 POUR FONCTION MOUVEMENT_DIRECTION") afficher_plateau(p) assert get_case(p,3,2)==2 # La valeur de la case (3,2) est 2 assert not get_case(p,3,2)==1 # La valeur de la case (3,2) est 2 p=creer_plateau(8) mouvement_direction(p,4,2,0,1,2) # On mange le pion blanc placé en (4,3) print("PLATEAU 8 POUR FONCTION MOUVEMENT_DIRECTION") afficher_plateau(p) assert get_case(p,4,3)==2 # La valeur de la case (4,3) est 2 assert not get_case(p,4,3)==1 # La valeur de la case (4,3) est 2