Projet python

Messages postés
10
Date d'inscription
dimanche 13 mai 2018
Dernière intervention
21 mai 2018
- - Dernière réponse : Upidev
Messages postés
4
Date d'inscription
samedi 28 juillet 2018
Dernière intervention
28 juillet 2018
- 28 juil. 2018 à 16:32
Bonjour je suis actuellement en terminale et je suis entrain de finaliser mon projet d'ISN. Mon projet est un jeu c'est puissance 4 rien de très complique sauf que je n’arrive pas a écrire une ligne de code qui me permet de détermine le gagnant . Merci pour ceux qui me repondrons
voici mon programme :

from tkinter import*

J1=input("Entre ton nom pour la couleur rouge : ")# On donne le noms des joueurs aux variables J1 et J2 qu'on insère dans le jeu par un bouton
J2=input("Entre ton nom pour la couleur jaune : ")
input("Appuyer sur 'Entrer' pour commencer à jouer ! ")

#---------------------------------------------definition-----------------------------------------------
def pos_arrondie(x,y):
    global cote
    x1=cote*int(x/cote)
    y1=cote*int(y/cote)
    return x1,y1

def animation():
    global ydebut,yfin,pion,cote,x
    can.coords(pion,x,ydebut,x+cote,ydebut+cote)
    ydebut+=50
    i=int(x/cote)
    if ydebut<=yfin[i]:
        can.after(50,animation)
        

def cercle(event):
    global cote,pion,ydebut,yfin,x,y,compteur
    ydebut=0
    x,y=pos_arrondie(event.x,event.y)
    if yfin==[0, 0, 0, 0, 0, 0, 0]:# Lorque tout les pions arrive en Y=0 on a joué les 42 pions et c'est donc la fin de la partie
            pass
    else:
        if compteur%2: # Les pions altèrnent entre le rouge et le jaune pour chaque joueur puisse jouer à tour de role
            pion=can.create_oval(x,ydebut,x+100,ydebut+100,fill="yellow",tags="pions")
            compteur+=1
            i=int(x/cote)
            yfin[i]-=cote
            print(yfin)
            animation()

        else :
            pion=can.create_oval(x,ydebut,x+100,ydebut+100,fill="red",tags="pions")
            compteur+=1
            i=int(x/cote)
            yfin[i]-=cote
            print(yfin)
            animation()
        print(compteur)
    

def regle_du_jeu() :
    fenetre_regle_du_jeu = Tk()# Création de la fenetre_regle_du_jeu
    fenetre_regle_du_jeu.title("Règle du jeu")# Nom de la fenêtre

    # Définition du texte à afficher
    texte ="""
           RÈGLE DU JEU :
           ------------

Le jeu se pratique avec une grille verticale, traditionnellement de 7 colonnes et 6 lignes.
Chaque joueur joue alternativement en laissant tomber un de ses jetons du haut d'une des colonnes.
Ce jeton remplit donc la plus basse case inoccupée de la colonne.
Le vainqueur est le premier à obtenir un alignement de 4 jetons(horizontalement, verticalement, ou en diagonale).
Il est possible de remplir la grille sans qu'aucun des 2 joueur n'ait gagné... il y a alors match nul.

"""

    #Définition de la zone de texte
    champ_info = Label(fenetre_regle_du_jeu, text = texte)# On appelle la fenêtre et on insère le texte
    champ_info.pack()

    
    #Bouton pour fermer la fenêtre des règles du jeu
    bouton_ok = Button(fenetre_regle_du_jeu, text="Fermer", command=fenetre_regle_du_jeu.destroy)
    bouton_ok.pack(side=RIGHT)

def nouvelle_partie():
    global cote,yfin,compteur
    can.delete("pions")# On supprime tout les pions
    yfin=[6*cote,6*cote,6*cote,6*cote,6*cote,6*cote,6*cote]# On réinitialise Yfin pour rejouer tout en bas
    compteur=0 #Rénitialisation du compteur qui doit être inférieur à 42 coups
    
#-------------------------------------------Programme-----------------------------------------------
# On applique une valeur à nos variables
cote=100
compteur=0
yfin=[6*cote,6*cote,6*cote,6*cote,6*cote,6*cote,6*cote]

#On paramètre ici l'interface de jeu
fen = Tk()# Ouverture de la fenêtre de jeu
fen.title("Puissance 4")# Nom de la fenêtre
can=Canvas(fen,width=700,height=623)#Taille de la zone de jeu
for i in range(6):#Création du quadrillage
    can.create_line(0,i*cote,7*cote,i*cote)
for j in range(7):
    can.create_line(j*cote,0,j*cote,6*cote)
can.pack(side=BOTTOM)
b1=Button(fen,text='Quitter',command=fen.quit,fg='blue',bg='black')#Bouton qui nous sert à quitter le jeu
b1.pack(side=BOTTOM)
bou=Button(fen,text='REGLE DU JEU',fg='blue',bg='black',command = regle_du_jeu)#Bouton qui appelle la fonction qui nous affiche les règles du jeu
bou.pack()
bou=Button(fen,text='Nouvelle partie',fg='blue',bg='black',command =nouvelle_partie)#Bouton qui appelle la fonction de nouvelle partie
bou.pack(side=BOTTOM,pady=10)
bou=Button(fen,text=J1,fg='black',bg='red')#Bouton qui sert à afficher le nom du joueur 1
bou.pack(side=LEFT)
bou=Button(fen,text=J2,fg='black',bg='yellow')#Bouton qui sert à afficher le nom du joueur 2
bou.pack(side=RIGHT)
can.bind("<Button-1>",cercle)#Appelle la fonction qui déssine un cercle par un clic gauche
fen.mainloop()
fen.destroy()
Afficher la suite 

Votre réponse

1 réponse

Messages postés
4
Date d'inscription
samedi 28 juillet 2018
Dernière intervention
28 juillet 2018
0
Merci
Salut Python290,

J'ai créé récemment un résolveur de puissance 4.
https://github.com/blancheta/connectz/blob/master/models.py

J'espère que ça pourra t'aider.

A bientôt,
EDIT : url site supprimée par la modération
Commenter la réponse de Upidev

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.