Isn aide
fatder
Messages postés
14
Statut
Membre
-
fatder Messages postés 14 Statut Membre -
fatder Messages postés 14 Statut Membre -
BonSoir , j'ai absolument besoin d'aide s'ils vous plaît. Nous avons notre oral Mardi et nous arrivons pas à achever note projet qui est sur le morpion . Nous sommes un groupe de trois . A. Était responsable de la fenetre / M était responsable du jeu entre humain vs humain / et K du jeu entre Humain vs ordinateur . Mais nous roncentrer de très grosse problèmes lorsque nous rassembler no partie .
3 réponses
from Tkinter import *
import Tkinter as tk
################################ maelys #############################
def Clic(event):
global a,C1,C2,C3,C1RC,C1R,C2RC,C2R,C3RC,C3R,L1RC,L1R,L2RC,L2R,L3RC,L3R,L1,L2,L3
# position du pointeur de la souris
X = event.x
Y = event.y
#Si a=1 on met une croix
if a==1:
if X < 100:
if Y < 100:
if C1[0]==2:
a=0
C1[0]=1
L1[0]=1
Croix(50,50)
else :
showinfo(title='Non',message='Tu ne peux pas !')
else :
if Y < 200:
if C1[1]==2:
a=0
C1[1]=1
L2[0]=1
Croix(50,150)
else :
showinfo(title='Non',message='Tu ne peux pas !')
else :
if C1[2]==2:
a=0
C1[2]=1
L3[0]=1
Croix(50,250)
else :
showinfo(title='Non',message='Tu ne peux pas !')
if X < 200 and X > 100:
if Y < 100:
if C2[0]==3:
a=0
C2[0]=1
L1[1]=1
Croix(150,50)
else :
showinfo(title='Non',message='Tu ne peux pas !')
else :
if Y < 200:
if C2[1]==3:
a=0
C2[1]=1
L2[1]=1
Croix(150,150)
else :
showinfo(title='Non',message='Tu ne peux pas !')
else :
if C2[2]==3:
a=0
C2[2]=1
L3[1]=1
Croix(150,250)
else :
showinfo(title='Non',message='Tu ne peux pas !')
if X < 300 and X > 200:
if Y < 100:
if C3[0]==4:
a=0
C3[0]=1
L1[2]=1
Croix(250,50)
else :
showinfo(title='Non',message='Tu ne peux pas !')
else :
if Y < 200:
if C3[1]==4:
a=0
C3[1]=1
L2[2]=1
Croix(250,150)
else :
showinfo(title='Non',message='Tu ne peux pas !')
else :
if C3[2]==4:
a=0
C3[2]=1
L3[2]=1
Croix(250,250)
else :
showinfo(title='Non',message='Tu ne peux pas !')
#Ici a=0 et on met un rond
else:
if X < 100:
if Y < 100:
if C1[0]==2:
a=1
C1[0]=0
L1[0]=0
Rond(50,50)
else :
showinfo(title='Non',message='Tu ne peux pas !')
else :
if Y < 200:
if C1[1]==2:
a=1
C1[1]=0
L2[0]=0
Rond(50,150)
else :
showinfo(title='Non',message='Tu ne peux pas !')
else :
if C1[2]==2:
a=1
C1[2]=0
L3[0]=0
Rond(50,250)
else :
showinfo(title='Non',message='Tu ne peux pas !')
if X < 200 and X > 100:
if Y < 100:
if C2[0]==3:
a=1
C2[0]=0
L1[1]=0
Rond(150,50)
else :
showinfo(title='Non',message='Tu ne peux pas !')
else :
if Y < 200:
if C2[1]==3:
a=1
C2[1]=0
L2[1]=0
Rond(150,150)
else :
showinfo(title='Non',message='Tu ne peux pas !')
else :
if C2[2]==3:
a=1
C2[2]=0
L3[1]=0
Rond(150,250)
else :
showinfo(title='Non',message='Tu ne peux pas !')
if X < 300 and X > 200:
if Y < 100:
if C3[0]==4:
a=1
C3[0]=0
L1[2]=0
Rond(250,50)
else :
showinfo(title='Non',message='Tu ne peux pas !')
else :
if Y < 200:
if C3[1]==4:
a=1
C3[1]=0
L2[2]=0
Rond(250,150)
else :
showinfo(title='Non',message='Tu ne peux pas !')
else :
if C3[2]==4:
a=1
C3[2]=0
L3[2]=0
Rond(250,250)
else :
showinfo(title='Non',message='Tu ne peux pas !')
#ici on créer la fonction pour afficher les ronds
def Rond(x1,y1):
global C1,C2,C3
Canevas.create_oval (x1 - 35, y1 - 35, x1 + 35, y1 + 35, fill = 'red')
Canevas.create_oval(x1 - 30, y1 - 30, x1+20, y1+20, fill = 'white')
Verif()
#ici on créer la fonction pour afficher les croix
def Croix(x1,y1):
global C1,C2,C3
Canevas.create_line(x1-35, y1+35, x1+35, y1-35, width = 5, fill = 'blue')
Canevas.create_line(x1-35, y1-35, x1+35, y1+35, width = 5, fill = 'blue')
Verif()
#ici on créer la fonction qui compte les points
def Verif():
global C1, C2,C3,C1RC,C1R,C2RC,C2R,C3RC,C3R,L1RC,L1R,L2RC,L2R,L3RC,L3R,L1,L2,L3
C1RC = C1.count(1)
C1R = C1.count(0)
C2RC = C2.count(1)
C2R = C2.count(0)
C3RC = C3.count(1)
C3R = C3.count(0)
L1RC = L1.count(1)
L1R = L1.count(0)
L2RC = L2.count(1)
L2R = L2.count(0)
L3RC = L3.count(1)
L3R = L3.count(0)
#ici on affiche le joueur qui a gagner
if C1RC == 3:
showinfo(title='Gagne',message='Joueur 1 a Gagner !')
if C1R == 3:
showinfo(title='Gagne',message='Joueur 2 a Gagner !')
if C2RC == 3:
showinfo(title='Gagne',message='Joueur 1 a Gagner !')
if C2R == 3:
showinfo(title='Gagne',message='Joueur 2 a Gagner !')
if C3RC == 3:
showinfo(title='Gagne',message='Joueur 1 a Gagner !')
if C3R == 3:
showinfo(title='Gagne',message='Joueur 2 a Gagner !')
if C1[0]==1 and C2[1]==1 and C3[2]==1:
showinfo(title='Gagne',message='Joueur 1 a Gagner !')
if C1[2]==1 and C2[1]==1 and C3[0]==1:
showinfo(title='Gagne',message='Joueur 1 a Gagner !')
if C1[0]==0 and C2[1]==0 and C3[2]==0:
showinfo(title='Gagne',message='Joueur 2 a Gagner !')
if C1[2]==0 and C2[1]==0 and C3[0]==0:
showinfo(title='Gagne',message='Joueur 2 a Gagner !')
if L1RC == 3:
showinfo(title='Gagne',message='Joueur 1 a Gagner !')
if L1R == 3:
showinfo(title='Gagne',message='Joueur 2 a Gagner !')
if L2RC == 3:
showinfo(title='Gagne',message='Joueur 1 a Gagner !')
if L2R == 3:
showinfo(title='Gagne',message='Joueur 2 a Gagner !')
if L3RC == 3:
showinfo(title='Gagne',message='Joueur 1 a Gagner !')
if L3R == 3:
showinfo(title='Gagne',message='Joueur 2 a Gagner !')
#ici on initialise les colones et les lignes
C1RC,C1R,C2RC,C2R,C3RC,C3R,L1RC,L1R,L2RC,L2R,L3RC,L3R = 0,0,0,0,0,0,0,0,0,0,0,0
a=1
C1=[2,2,2]
L1=[2,2,2]
C2=[3,3,3]
L2=[3,3,3]
C3=[4,4,4]
L3=[4,4,4]
print(C1)
############################amel######################"
# Création de la fenêtre principale
Mafenetre = Tk()
Mafenetre.title("Morpion par MKA")
# Création d'un widget Canvas
Largeur = 300
Hauteur = 300
Canevas = Canvas(Mafenetre, width = Largeur, height =Hauteur, bg ="white")
# La méthode bind() permet de lier un événement avec une fonction :
# un clic gauche sur la zone graphique provoquera l'appel de la fonction utilisateur Clic()
Canevas.bind("<Button-1>", Clic)
Canevas.pack(padx =5, pady =5)
#ici on créer les lignes qui délimite les colones et les cases
Canevas.create_line(105, 10, 105, 290, width = 5)
Canevas.create_line(205, 10, 205, 290, width = 5)
Canevas.create_line(10, 105, 290, 105, width = 5)
Canevas.create_line(10, 205, 290, 205, width = 5)
mainmenu = tk.Menu(Mafenetre)
menuOptions = tk.Menu(mainmenu) ## Menu Fils
menuOptions.add_command(label = "Recommencer" , command = Mafenetre.quit)
menuOptions.add_command(label = "Quitter" , command = Mafenetre.destroy)
menuModes = tk.Menu(mainmenu) ## Menu Fils
menuModes.add_command(label = "1 joueurs", command =Clic)
menuModes.add_command(label = "2 joueurs", command =Clic)
mainmenu.add_cascade(label = "Options", menu = menuOptions)
mainmenu.add_cascade(label = "Modes", menu = menuModes)
#######################################kader########################################
class Joueur():
def __init__(self, nom, num, pion, typejoueur):
self.setName(nom) # nom du joueur. Ex: "joueur1", "joueur2", ...
self.num = num # numéro du joueur. Ex: 0 pour joueur1, 1 pour joueur2, etc...
self.pion = pion # forme de pion affecté
self.typejoueur = typejoueur # type de joueur: 0 = ordinateur, 1 = humain
self.stop = False # drapeau pour stopper le thread à la demande du programme principal
def run(self):
# accès aux variables globales
global verrou # verrou d'accès aux variables globales
global okjoue # drapeau donnée par le programme principal qui permet au joueur de jouer
global cdcoups # compteur de coups
global premier # désigne le numéro du joueur qui a joué en premier
global nbjoueurs # nombre de joueurs du jeu
global aide # dit si l'affichage d'une aide est demandé
while not self.stop: # tant que le jeu n'est pas terminé
##### => chaque joueur attend son tour pour jouer
while True:
# on prend le verrou d'accès aux variables globales
verrou.acquire()
if self.stop:
# jeu terminé. on sort de la boucle, mais en conservant le blocage du verrou
break
if okjoue and (cdcoups+premier)%nbjoueurs==self.num:
# = ça y est, on peut jouer, mais on conserve le verrou jusqu'à la fin du coup
break
# on libère le verrou pour que les autres joueurs accédent aussi aux variables globales
verrou.release()
##### => le joueur en cours joue
if not self.stop:
if self.typejoueur==0:
# c'est un joueur "ordinateur" qui joue
if self.pion=='X':
pionautre='O'
else:
pionautre='X'
print
print self.getName() + " joue ('" + self.pion + "' contre '" + pionautre + "')"
self.chx = ajouer(self.pion)
print self.getName() + " joue case: ",self.chx
grille[self.chx[0]][self.chx[1]]=self.pion
time.sleep(0.1)
else:
# c'est un joueur "humain" qui joue
if self.pion=='X':
pionautre='O'
else:
pionautre='X'
print
print self.getName() + " joue ('" + self.pion + "' contre '" + pionautre + "')"
self.chx = ajouer(self.pion)
ch=self.getName() + " joue case: "
if aide:
ch = self.getName() + " joue case " + str(self.chx) + ": "
else:
ch = self.getName() + " joue case (ligne,colonne):"
while True:
self.coup = raw_input(ch)
if aide and self.coup=="":
# ici, le jour a choisi le coup proposé
grille[self.chx[0]][self.chx[1]]=self.pion
break
try:
# ici, le joueur a entré un choix ligne,colonne
x = eval(self.coup)
if ((type(x)==list or type(x)==tuple) and len(x)==2) \
and (x[0] in [0,1,2]) and (x[1] in [0,1,2]) \
and grille[x[0]][x[1]]==' ':
grille[x[0]][x[1]]=self.pion
break
except:
# ici, le choix entré n'est pas correct
pass
##### => fin du coup du joueur en cours
# le joueur repasse la main au programme principal après chaque coup
okjoue = False
# on libère le verrou d'accès aux variables globales
verrou.release()
# et fin du thread si c'est demandé (sinon, attente du prochain coup)
if self.stop:
break
def stopper(self):
self.stop = True
Mafenetre.config(menu=mainmenu)
Mafenetre.mainloop()
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |