Comment gagner sur un puissance 4 ?

Python290 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
Python290 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
Salut tout le monde !
Je débute sur python et je suis actuellement sur la version 3.6.4 de python et je programme un puissance 4 , je voudrais savoir comment faire pour créer la règle( que faut-il mettre dedans ?) pour gagner la partie avec un alignement de 4 jetons horizontalement,verticalement ou diagonalement ?
Merci d'avance à ceux qui m'aideront :)
Voici mon programme :

from tkinter import*

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 compteur%2:
        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
        animation()
    print(compteur)

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

    # 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)
    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")
    yfin=[6*cote,6*cote,6*cote,6*cote,6*cote,6*cote,6*cote]
    compteur=0


cote=100
compteur=0
yfin=[6*cote,6*cote,6*cote,6*cote,6*cote,6*cote,6*cote]
fen = Tk()
fen.title("Puissance 4")
can=Canvas(fen,width=700,height=600,bg='blue') #HEIGHT=hauteur
for i in range(6):
    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='white',bg='red')
b1.pack(side=BOTTOM)
bou=Button(fen,text='REGLE DU JEU',fg='white',bg='green',command = regle_du_jeu)
bou.pack()
bou=Button(fen,text='Nouvelle partie',fg='blue',bg='black',command = nouvelle_partie)
bou.pack()
bou=Button(fen,text='JOUEUR 1',fg='black',bg='red')
bou.pack(side =LEFT)
bou=Button(fen,text='JOUEUR 2',fg='black',bg='yellow')
bou.pack(side =RIGHT)
can.bind("<Button-1>",cercle)
fen.mainloop()
fen.destroy()


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, quand tu partages du code, surtout du code python, peux-tu utiliser la coloration syntaxique?
je te suggère de progresser dans ton programme avant de chercher comment détecter que la partie est finie. tu dois d'abord te poser d'autres questions. je ne vois pas dans ton programme comment la partie est représentée, ni comment le premier jeton est placé.
0
Python290 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Je suis vraiment à un niveau très bas en terme de programmation et c'est la seule chose qui me manque donc si tu pourrais copier mon programme et le faire fonctionner sur ton pc ça serait vraiment très aimable de ta part parce que c'est un projet que je dois rendre mardi
0