Puissance 4 python tkinter affichage du gagant
Résolu
Mat_8641
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
Spirali -
Spirali -
Bonjour à tous !
J'ouvre ce topic car j'ai besoin d'un peu d'aide sur mon programme...
Mon problème est le suivant : Comment détecter que l'un des joueurs a gagné ?
Le programme aligne bien les jetons mais je ne sais pas comment détecter les pions de façon diagonale / horizontale / verticale
Merci à ceux qui répondront . Et n’hésitez pas à me donner des conseils pour améliorer mon programme :)
Voici mon programme :
J'ouvre ce topic car j'ai besoin d'un peu d'aide sur mon programme...
Mon problème est le suivant : Comment détecter que l'un des joueurs a gagné ?
Le programme aligne bien les jetons mais je ne sais pas comment détecter les pions de façon diagonale / horizontale / verticale
Merci à ceux qui répondront . Et n’hésitez pas à me donner des conseils pour améliorer mon programme :)
Voici mon programme :
from tkinter import * fenetre = Tk() fenetre.title("Grille") fenetre.geometry("900x800") Zone=Canvas(fenetre, width = 1000, height = 900, bg = "lightgrey") Zone.place(x = 0, y = 0) matrice = [[0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0]] def ligneVerticale(x): y1=99 y2=702 Zone.create_line(x,y1,x,y2,width=3,fill="blue") def ligneHorizontale(x): x1=99 x2=802 Zone.create_line(x1,x,x2,x,width=3,fill="blue") y = 0 while y != 900: ligneVerticale(y) y += 100 x=0 while x != 800: ligneHorizontale(x) x += 100 def trouverColonne(xClic): colonne = (xClic)//100-1 return colonne def trouverLigne(colonne): ligne1 = 5 for i in range(6): #Vérifier si des jetons sont déjà présent dans la colonne pour choisir la ligne if matrice[ligne1][colonne] == 0: ligne = ligne1 else: ligne1 -= 1 return ligne joueur = 1 def clic(event): global joueur xClic, yClic = event.x, event.y if 100 < xClic < 800: #Vérifier que le clic est dans le tableau colonne = trouverColonne(xClic) ligne = trouverLigne(colonne) if joueur == 1: #Joueur rouge Zone.create_oval(colonne*100+120, ligne*100+180, colonne*100+180, ligne*100+120, fill='red') #Placement du jeton au milieu de la case matrice[ligne][colonne] = 1 #Définir que cette case est rouge dans le tableau joueur = 2 print("Au tour du joueur Jaune !") elif joueur == 2: #Joueur jaune Zone.create_oval(colonne*100+120, ligne*100+180, colonne*100+180, ligne*100+120, fill='yellow') matrice[ligne][colonne] = 2 joueur = 1 print("Au tour du joueur Rouge !") fenetre.bind("<Button-1>", clic) fenetre.mainloop()
A voir également:
- Puissance 4 python corrigé
- Test puissance pc - Guide
- Citizen code python avis - Accueil - Outils
- Code gta 4 ps4 - Guide
- Puissance signal wifi - Guide
- Puissance en c - Forum Programmation
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
qu'as-tu essayé?
sur quoi butes-tu?
qu'as-tu essayé?
sur quoi butes-tu?
qui as écrit ce programme?
Vérifier qu'il y a alignement se fait après qu'un joueur a joué, il faut donc une fonction.
Tu as déjà ta matrice, mais commence déjà au plus simple avec de simples listes pour l'horizontal.
Comme vérifier qu'il y a 4 "1" consécutifs dans a et b mais pas c :
Si c'est toi qui a codé ce script, tu n'auras aucun mal a faire ça, et si tu as des bases en python, non plus.
La logique pour le vertical est exactement la même.
Et pour les diagonales, quand tu auras réalisé les deux précédents, il y a de fortes chances que tu trouves toi-même la solution.