Aide pour notre projet Isn
Kingwarras
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
-
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, pour notre projet d'Isn, nous avons décidé de créer un morpion; mais nous n'arrivons pas à le terminer.
Nous avons notre fenêtre, la grille, les formes et nous pouvons les positionner à l'aide du clavier numérique.
Nous avons 2 problèmes:
- si je place une croix dans une case, le joueur suivant peux y placer un cercle. Je ne sais pas comment y remédier
- et le dernier problème c'est de définir quand est ce qu'un joueur gagne; je sais qu'il faut dire au programme que si 3 ronds/cercles sont alignés le joueur gagne, mais je ne sais pas comment définir cet alignement.
En espérant que quelqu'un nous vienne en aide
Programme:
Nous avons notre fenêtre, la grille, les formes et nous pouvons les positionner à l'aide du clavier numérique.
Nous avons 2 problèmes:
- si je place une croix dans une case, le joueur suivant peux y placer un cercle. Je ne sais pas comment y remédier
- et le dernier problème c'est de définir quand est ce qu'un joueur gagne; je sais qu'il faut dire au programme que si 3 ronds/cercles sont alignés le joueur gagne, mais je ne sais pas comment définir cet alignement.
En espérant que quelqu'un nous vienne en aide
Programme:
from Tkinter import * def dessin_partie(x,y): if joueur==1: s='c' t='r' else: s='r' t='c' t=t+str(x)+str(y) s=s+str(x)+str(y) fond.itemconfig(t,state=HIDDEN) fond.itemconfig(s,state=NORMAL) def alignement(): global table aligne = (table[0]==[1,1,1] or table[1]==[1,1,1] or table[2]==[1,1,1]) #alignement horiz aligne = aligne or (table[0]==[2,2,2] or table[1]==[2,2,2] or table[2]==[2,2,2]) #alignement horiz aligne = aligne or (table[0][0] in [1,2] and table[0][0]==table[0][1] and table[0][1]==table[0][2]) #alignement vertical return aligne def jouer(event): global joueur,table,finpartie,informe zz=event.char informe.config(text='touche='+zz) fini = not (zz in ['1','2','3','4','5','6','7','8','9']) while not fini: if zz=='1': x=0;y=2 elif zz=='2': x=1;y=2 elif zz=='3': x=2;y=2 elif zz=='4': x=0;y=1 elif zz=='5': x=1;y=1 elif zz=='6': x=2;y=1 elif zz=='7': x=0;y=0 elif zz=='8': x=1;y=0 elif zz=='9': x=2;y=0 if table[x][y]==0 : table[x][y]==joueur finpartie=alignement() dessin_partie(x,y) joueur=joueur+1 if joueur>2:joueur=1 fini=True def nouvelle_partie(): global joueur,finpartie nomJoueur1 = 'Joueur 1' typeJoueur1 = 'humain' scoreJoueur1 = 0 #textnomJoueur1=fond.create_text(10,10,text=nomJoueur1) #fond.itemconfig(textScore1,text=str(scoreJoueur1)) nomJoueur2 = 'Joueur 2' typeJoueur2 = 'ordinateur' scoreJoueur2 = 0 joueur=1 finpartie=False #fond.itemconfig(textNomJoueur2,text=nomJoueur2) #fond.itemconfig(textScore2,text=str(scoreJoueur2)) fond.delete(img) fond.update() """tracer plateau""" fond.create_line(120, 30, 120, 280, width = 10) fond.create_line(205, 30, 205, 280, width = 10) fond.create_line(30, 120, 280, 120, width = 10) fond.create_line(30, 205, 280, 205, width = 10) #fond.create_text(100, 50, text='Appuyez sur une touche du pavé numérique') table=[ [0,0,0], [0,0,0], [0,0,0]] racine=Tk() #photo=Tkinter.PhotoImage(file="image morpion.gif") photo=PhotoImage(file="Z:\ISN\image morpion.gif") largeur=photo.width(); hauteur=photo.height() fond=Canvas(racine, width=300, height=300, bg='white') fond.pack() img=fond.create_image(largeur/2+1,hauteur/2+1,image=photo) taille=20 for k in range(3): for j in range(3): fond.create_oval(80+k*80-taille,80+j*80-taille,80+k*80+taille,80+j*80+taille,fill = "red",state=HIDDEN,tags='c'+str(k)+str(j)) fond.create_rectangle(80+k*80-taille,80+j*80-taille,80+k*80+taille,80+j*80+taille,fill = "blue",state=HIDDEN,tags='r'+str(k)+str(j)) bouton1=Button(racine, text="Quitter", command=racine.destroy) bouton1.pack(side=BOTTOM) bouton2=Button(racine, text="Jouer", command=nouvelle_partie) bouton2.pack(side=BOTTOM) informe=Label(racine,text='Coucou') informe.pack() racine.bind('<KeyPress>',jouer) racine.mainloop()
A voir également:
- Aide pour notre projet Isn
- Filigrane projet - Guide
- Gant projet - Télécharger - Gestion de projets
- Musique projet x - Forum Musique / Radio / Clip
- Différence entre pmo et chef de projet ✓ - Forum Programmation
- Wbs projet - Télécharger - Gestion de projets
3 réponses
'lut, modifie ton post et place ton code Python entre balises <@code python></code> (sans le @), pour que ça conserve l'indentation qui est obligatoire sur Python.
'lut, pour éviter que l'on ne puisse repasser sur la même case, il faut enregistrer l'état de cette case dans ton tableau
Quand on veut placer une forme, il faudra donc vérifier si cette case n'est pas déjà pleine:
Pour vérifier si un joueur a gagné, il faut faire une fonction qui te renverra si un joueur a gagné; je te conseille de renvoyer 0 si personne ne gagne, et 1 ou 2 respectivement si le joueur 1 ou 2 gagne.
C'est juste un tas de
table. De toute façon tu en auras besoin pour vérifier si un joueur a gagné ou non.
Quand on veut placer une forme, il faudra donc vérifier si cette case n'est pas déjà pleine:
def dessin_partie(x,y): if table[x][y] != 0: return # [Reste du code] table[x][y] = joueurIci j'inscris le numéro du joueur dans la case. Si c'est zéro, c'est que la case est vide, donc ça va, sinon, on annule la fonction avec
return.
Pour vérifier si un joueur a gagné, il faut faire une fonction qui te renverra si un joueur a gagné; je te conseille de renvoyer 0 si personne ne gagne, et 1 ou 2 respectivement si le joueur 1 ou 2 gagne.
C'est juste un tas de
ifà mettre; pour réduire la taille du code tu peut utiliser des boucles
forquand tu vérifies les lignes/colonnes; suivi de 2
ifs "à la main" pour les 2 diagonales.