Puissance 4 python tkinter affichage du gagant
Résolu
Mat_8641
Messages postés
3
Statut
Membre
-
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
- Code gta 4 ps4 - Guide
- Citizen code python avis - Accueil - Outils
- Puissance signal wifi - Guide
- Control center 4 - Télécharger - Divers Utilitaires
1 réponse
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
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.