Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from colorama import Style, Fore
- def affichage():
- print(Style.NORMAL + Fore.GREEN +"\n――――――― MENU ―――――――\n")
- print(Style.BRIGHT + Fore.MAGENTA +"1 ― Lancer une partie en mode simple")
- print(Style.NORMAL + Fore.MAGENTA +"2 ― Lancer une partie en mode avancé")
- print(Style.BRIGHT + Fore.RED + "3 - Lancer une partie simple contre l'ordinateur")
- print(Style.NORMAL + Fore.RED + "4 - Lancer une partie avancée contre l'ordinateur")
- print(Style.BRIGHT + Fore.CYAN +"5 ― Afficher les règles")
- print((Style.BRIGHT + Fore.BLUE) +"6 ― Afficher les crédits")
- print(Style.BRIGHT + Fore.GREEN +"7 ― Quitter\n")
- print(Style.RESET_ALL)
- choix = input("Entrez le numéro de votre choix : ")
- return choix
- def afficher_regles():
- print(Style.NORMAL + Fore.CYAN +"\n――――――――――――――――――――――――― REGLES ―――――――――――――――――――――――――\n")
- print(Style.RESET_ALL)
- print("Le but du jeu est d'aligner 4 jetons de sa couleur (horizontalement, verticalement ou en diagonale) avant son adversaire.")
- print("Chaque joueur joue à tour de rôle en plaçant un jeton dans une colonne.")
- print("Le jeton tombe alors dans la case vide la plus basse de la colonne choisie.")
- print("Si toutes les cases d'une colonne sont remplies, le joueur ne peut pas jouer dans cette colonne.")
- print("Dans le mode simple, le premier joueur à aligner 4 jetons de sa couleur remporte la partie.")
- print("Dans le mode avancé, le jeu continue jusqu'à ce que la grille soit pleine. Le joueur qui a fait le plus d'alignements remporte la partie.")
- print("Vous pouvez également jouer en mode simple ou avancé contre l'ordinateur si vous n'avez pas de partenaire de jeu.")
- def afficher_credits():
- print(Style.BRIGHT + Fore.BLUE +"\n―――――――――――――――――――― CREDITS ――――――――――――――――――――\n")
- print(Style.RESET_ALL)
- print("Développé par Lola Chenel, Sacha Frys et Sarah Labauge.")
- def formation(tab) :
- print(Style.BRIGHT + Fore.MAGENTA +"―――――――― PUISSANCE 4 ――――――――\n")
- print(Style.RESET_ALL)
- l = len(tab)
- c = len(tab[0])
- print('----' * c)
- for i in range(l):
- print('| ', end='')
- for j in range(c):
- if tab[i][j] == 1:
- print(Style.BRIGHT + Fore.RED + "X"+ Style.RESET_ALL , end= ' | ')
- elif tab[i][j] == 2:
- print(Style.BRIGHT + Fore.YELLOW + "O"+ Style.RESET_ALL, end=' | ')
- else:
- print(" ", end=' | ')
- print()
- print('| 1 | 2 | 3 | 4 | 5 | 6 | 7 |')
- def jouer_mode_classique():
- # code principal
- from colorama import Style, Fore
- joueur1 = input(Style.BRIGHT + Fore.RED + "Nom du joueur 1 : ")
- print(Style.RESET_ALL)
- joueur2 = input(Style.BRIGHT + Fore.YELLOW + "Nom du joueur 2 : ")
- print(Style.RESET_ALL)
- liste_joueur = [joueur1, joueur2]
- grille = []
- for i in range(6):
- ligne = []
- for j in range(7):
- ligne.append(0)
- grille.append(ligne)
- formation(grille)
- is_ended = False
- tour = 0
- while(not is_ended):
- if tour < 42:
- joueur = tour%2 + 1
- col = input(liste_joueur[tour%2] + ", choisissez une colonne : " )
- while not col.isnumeric() or int(col) < 1 or int(col) > 7:
- print("Colonne invalide. Veuillez choisir une colonne entre 1 et 7.")
- col = input(liste_joueur[tour%2] + ", choisissez une colonne : " )
- col = int(col)
- else :
- is_ended = True
- print ("La partie est terminée. Match nul.")
- # Obtenir la prochaine ligne disponible dans la colonne sélectionnée
- row = 5
- while row >= 0:
- if grille[row][col-1] == 0:
- break
- row -= 1
- # Vérifier si la colonne sélectionnée est pleine
- if row < 0:
- print("La colonne est pleine. Veuillez choisir une autre colonne.")
- else:
- # Placez la pièce du joueur sur la cellule sélectionnée
- grille[row][col-1] = joueur
- formation(grille)
- tour = tour + 1
- # Vérifier si un joueur a gagné
- # Vérifier la victoire horizontale
- for row in range(6):
- for col in range(4):
- if grille[row][col] == grille[row][col+1] == grille[row][col+2] == grille[row][col+3] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a gagné.")
- is_ended = True
- # Vérifier la victoire verticale
- for col in range(7):
- for row in range(3):
- if grille[row][col] == grille[row+1][col] == grille[row+2][col] == grille[row+3][col] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a gagné.")
- is_ended = True
- # Vérifier la victoire diagonale à pente positive
- for row in range(3):
- for col in range(4):
- if grille[row][col] == grille[row+1][col+1] == grille[row+2][col+2] == grille[row+3][col+3] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a gagné.")
- is_ended = True
- # Vérifier la victoire diagonale à pente négative
- for row in range(3):
- for col in range(6, 2, -1):
- if grille[row][col] == grille[row+1][col-1] == grille[row+2][col-2] == grille[row+3][col-3] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a gagné.")
- is_ended = True
- def jouer_mode_avancé():
- from colorama import Style, Fore
- joueur1 = input(Style.BRIGHT + Fore.RED + "Nom du joueur 1 : ")
- print(Style.RESET_ALL)
- joueur2 = input(Style.BRIGHT + Fore.YELLOW + "Nom du joueur 2 : ")
- print(Style.RESET_ALL)
- liste_joueur = [joueur1, joueur2]
- grille = []
- for i in range(6):
- ligne = []
- for j in range(7):
- ligne.append(0)
- grille.append(ligne)
- formation(grille)
- is_ended = False
- tour = 0
- tableau = [0,0] #j'ajoute une liste
- while(not is_ended):
- if tour < 42:
- joueur = tour%2 + 1
- col = input(liste_joueur[tour%2] + ", choisissez une colonne : " )
- while not col.isnumeric() or int(col) < 1 or int(col) > 7:
- print("Colonne invalide. Veuillez choisir une colonne entre 1 et 7.")
- col = input(liste_joueur[tour%2] + ", choisissez une colonne : " )
- col = int(col)
- else :
- is_ended = True
- if tableau == [0,0]:
- print ("La partie est terminée. Aucun alignement. Match nul.")
- else:
- if tableau[0] == tableau[1]:
- print ("La partie est terminée. Même nombre d'alignements. Match nul.")
- elif tableau[0] > tableau[1]:
- print (joueur1 + " a gagné.")
- elif tableau[0] < tableau[1]:
- print (joueur2 + " a gagné.")
- # Obtenir la prochaine ligne disponible dans la colonne sélectionnée
- row = 5
- while row >= 0:
- if grille[row][col-1] == 0:
- break
- row -= 1
- # Vérifier si la colonne sélectionnée est pleine
- if row < 0:
- print("La colonne est pleine. Veuillez choisir une autre colonne.")
- else:
- # Placez la pièce du joueur sur la cellule sélectionnée
- grille[row][col-1] = joueur
- formation(grille)
- tour = tour + 1
- # Vérifier si un joueur a gagné
- # Vérifier la victoire horizontale
- for row in range(6):
- for col in range(4):
- if grille[row][col] == grille[row][col+1] == grille[row][col+2] == grille[row][col+3] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a fait un alignement.")
- tableau[(tour+1)%2] +=1
- # Vérifier la victoire verticale
- for col in range(7):
- for row in range(3):
- if grille[row][col] == grille[row+1][col] == grille[row+2][col] == grille[row+3][col] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a fait un alignement.")
- tableau[(tour+1)%2] +=1
- # Vérifier la victoire diagonale à pente positive
- for row in range(3):
- for col in range(4):
- if grille[row][col] == grille[row+1][col+1] == grille[row+2][col+2] == grille[row+3][col+3] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a fait un alignement.")
- tableau[(tour+1)%2] +=1
- # Vérifier la victoire diagonale à pente négative
- for row in range(3):
- for col in range(6, 2, -1):
- if grille[row][col] == grille[row+1][col-1] == grille[row+2][col-2] == grille[row+3][col-3] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a fait un alignement.")
- tableau[(tour+1)%2] +=1
- # comment compter le nb d'alignements et annoncer gagnant à la fin?
- print(f"Score joueur {liste_joueur[0]} : {tableau[0]} alignement(s)")
- print(f"Score joueur {liste_joueur[1]} : {tableau[1]} alignement(s)")
- tableau[tour%2] = 0
- import random
- def jouer_mode_simple_ordi():
- # code principal
- from colorama import Style, Fore
- joueur = input(Style.BRIGHT + Fore.RED + "Nom du joueur 1 : ")
- print(Style.BRIGHT + Fore.CYAN + " VS ")
- print(Style.BRIGHT + Fore.YELLOW + "Ordinateur !")
- print(Style.RESET_ALL)
- liste_joueur = [joueur, "Ordinateur"]
- grille = []
- for i in range(6):
- ligne = []
- for j in range(7):
- ligne.append(0)
- grille.append(ligne)
- formation(grille)
- is_ended = False
- tour = 0
- while(not is_ended):
- if tour < 42:
- joueur = tour%2 + 1 # c'est ici qui doit etre cette ligne de code
- if tour%2 == 0:
- col = input(liste_joueur[tour%2] + ", choisissez une colonne : " )
- while not col.isnumeric() or int(col) < 1 or int(col) > 7:
- print("Colonne invalide. Veuillez choisir une colonne entre 1 et 7.")
- col = input(liste_joueur[tour%2] + ", choisissez une colonne : " )
- col = int(col)
- else:
- # ordi
- col = random.randint(1,7)
- else :
- is_ended = True
- print ("La partie est terminée. Match nul.")
- # Obtenir la prochaine ligne disponible dans la colonne sélectionnée
- row = 5
- while row >= 0:
- if grille[row][col-1] == 0:
- break
- row -= 1
- # Vérifier si la colonne sélectionnée est pleine
- if row < 0:
- print("La colonne est pleine. Veuillez choisir une autre colonne.")
- else:
- # Placez la pièce du joueur sur la cellule sélectionnée
- grille[row][col-1] = joueur
- formation(grille)
- tour = tour + 1
- # Vérifier si un joueur a gagné
- # Vérifier la victoire horizontale
- for row in range(6):
- for col in range(4):
- if grille[row][col] == grille[row][col+1] == grille[row][col+2] == grille[row][col+3] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a gagné.")
- is_ended = True
- # Vérifier la victoire verticale
- for col in range(7):
- for row in range(3):
- if grille[row][col] == grille[row+1][col] == grille[row+2][col] == grille[row+3][col] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a gagné.")
- is_ended = True
- # Vérifier la victoire diagonale à pente positive
- for row in range(3):
- for col in range(4):
- if grille[row][col] == grille[row+1][col+1] == grille[row+2][col+2] == grille[row+3][col+3] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a gagné.")
- is_ended = True
- # Vérifier la victoire diagonale à pente négative
- for row in range(3):
- for col in range(6, 2, -1):
- if grille[row][col] == grille[row+1][col-1] == grille[row+2][col-2] == grille[row+3][col-3] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a gagné.")
- is_ended = True
- def jouer_mode_avancé_ordi():
- # code principal
- from colorama import Style, Fore
- joueur = input(Style.BRIGHT + Fore.RED + "Nom du joueur 1 : ")
- print(Style.BRIGHT + Fore.CYAN + " VS ")
- print(Style.BRIGHT + Fore.YELLOW + "Ordinateur !")
- print(Style.RESET_ALL)
- liste_joueur = [joueur, "Ordinateur"]
- grille = []
- for i in range(6):
- ligne = []
- for j in range(7):
- ligne.append(0)
- grille.append(ligne)
- formation(grille)
- is_ended = False
- tour = 0
- tableau = [0,0] #j'ajoute une liste
- while(not is_ended):
- if tour < 42:
- joueur = tour%2 + 1 # c'est ici qui doit etre cette ligne de code
- if tour%2 == 0:
- col = input(liste_joueur[tour%2] + ", choisissez une colonne : " )
- while not col.isnumeric() or int(col) < 1 or int(col) > 7:
- print("Colonne invalide. Veuillez choisir une colonne entre 1 et 7.")
- col = input(liste_joueur[tour%2] + ", choisissez une colonne : " )
- col = int(col)
- else:
- # ordi
- col = random.randint(1,7)
- else :
- is_ended = True
- if tableau == [0,0]:
- print ("La partie est terminée. Aucun alignement. Match nul.")
- else:
- if tableau[0] == tableau[1]:
- print ("La partie est terminée. Même nombre d'alignements. Match nul.")
- elif tableau[0] > tableau[1]:
- print (joueur + " a gagné.")
- elif tableau[0] < tableau[1]:
- print ("Ordinateur a gagné.")
- # Obtenir la prochaine ligne disponible dans la colonne sélectionnée
- row = 5
- while row >= 0:
- if grille[row][col-1] == 0:
- break
- row -= 1
- # Vérifier si la colonne sélectionnée est pleine
- if row < 0:
- print("La colonne est pleine. Veuillez choisir une autre colonne.")
- else:
- # Placez la pièce du joueur sur la cellule sélectionnée
- grille[row][col-1] = joueur
- formation(grille)
- tour = tour + 1
- # Vérifier si un joueur a gagné
- # Vérifier la victoire horizontale
- for row in range(6):
- for col in range(4):
- if grille[row][col] == grille[row][col+1] == grille[row][col+2] == grille[row][col+3] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a fait un alignement.")
- tableau[(tour+1)%2] +=1
- # Vérifier la victoire verticale
- for col in range(7):
- for row in range(3):
- if grille[row][col] == grille[row+1][col] == grille[row+2][col] == grille[row+3][col] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a fait un alignement.")
- tableau[(tour+1)%2] +=1
- # Vérifier la victoire diagonale à pente positive
- for row in range(3):
- for col in range(4):
- if grille[row][col] == grille[row+1][col+1] == grille[row+2][col+2] == grille[row+3][col+3] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a fait un alignement.")
- tableau[(tour+1)%2] +=1
- # Vérifier la victoire diagonale à pente négative
- for row in range(3):
- for col in range(6, 2, -1):
- if grille[row][col] == grille[row+1][col-1] == grille[row+2][col-2] == grille[row+3][col-3] and grille[row][col] == joueur:
- print("Le joueur", liste_joueur[(tour+1)%2], "a fait un alignement.")
- tableau[(tour+1)%2] +=1
- # comment compter le nb d'alignements et annoncer gagnant à la fin?
- print(f"Score joueur {liste_joueur[0]} : {tableau[0]} alignement(s)")
- print(f"Score joueur {liste_joueur[1]} : {tableau[1]} alignement(s)")
- tableau[tour%2] = 0
- # fonction principale du programme
- def main():
- while True:
- choix = affichage() # affichage du menu principal et récupération du choix de l'utilisateur
- if choix == '1':
- jouer_mode_classique() # lancement d'une partie de puissance 4
- main()
- if choix == '2':
- jouer_mode_avancé()
- main()
- if choix == '3':
- jouer_mode_simple_ordi()
- main()
- if choix == '4':
- jouer_mode_avancé_ordi()
- elif choix == '5':
- afficher_regles()
- main()
- elif choix == '6':
- afficher_credits()
- main()
- elif choix == '7':
- print(Style.BRIGHT + Fore.GREEN +"Au revoir!\n")
- print(Style.RESET_ALL)
- break
- main()
- #Sauvegarder les statistiques de jeu dans un fichier csv
- from datetime import datetime
- date = datetime.now().strftime('%Y-%m-%d')
- heure = datetime.now().strftime('%H:%M:%S')
- #ID, durée, nombre de déplacements, nombre de points
- import time
- debut = time.time() # le temps en miliseconde depuis 1 janvier 1970
- fin = time.time()
- Durée_programme = int(fin-debut)
- print("Mon programme a duré :",Durée_programme," secondes")
- import os.path
- import time
- try:
- os.makedirs("Assets/Data")
- except FileExistsError:
- pass
- #afficher les dates
- date =time.strftime("%d-%m-%Y")
- #afficher L'heure
- heure =time.strftime("%H:%M:%S")
- id_compte = 0
- try:
- # on ouvre le fichier en mode lecture
- with open("Assets/Data/Sauvegarde.csv", "r") as fic:
- pass
- except FileNotFoundError:
- with open("Assets/Data/Sauvegarde.csv", "w") as fic:
- fic.write(f"""date,{date}
- heure,{heure}
- id_compte,{0}""")
- # on charge les données à partir du fichier.csv au début du programme
- with open("Assets/Data/Sauvegarde.csv", "r") as fic:
- for ligne in fic:
- if "date" in ligne:
- date = ligne[ligne.find(',')+1:]
- if "heure" in ligne:
- heure = ligne[ligne.find(',')+1:]
- if "id_compte"in ligne:
- id_compte = int(ligne[ligne.find(',')+1:])
- print("Dernière fois que vous avez lancé ce programme :")
- print("Date :",date)
- print("Heure :",heure)
- print("Nombre de parties :",id_compte)
- # on sauvegarde les données à la fin du programme
- # sinon toutes les données dans le fichier.csv seront perdues
- with open("Assets/Data/Sauvegarde.csv", "w") as fic:
- fic.write("date,"+time.strftime("%d-%m-%Y")+"\n")
- fic.write("heure,"+time.strftime("%H:%M:%S")+"\n")
- fic.write("id_compte,"+str(id_compte + 1)+"\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement