Comment gagner sur un puissance 4 ?

Fermé
Python290 Messages postés 8 Date d'inscription dimanche 13 mai 2018 Statut Membre Dernière intervention 21 mai 2018 - Modifié le 20 mai 2018 à 12:21
Python290 Messages postés 8 Date d'inscription dimanche 13 mai 2018 Statut Membre Dernière intervention 21 mai 2018 - 20 mai 2018 à 23:26
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.

1 réponse

yg_be Messages postés 22732 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 avril 2024 1 477
20 mai 2018 à 11:12
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 dimanche 13 mai 2018 Statut Membre Dernière intervention 21 mai 2018
20 mai 2018 à 23:26
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