Python programmation jeux puissance 4

Fermé
KEVIN471 Messages postés 30 Date d'inscription mercredi 2 juillet 2014 Statut Membre Dernière intervention 20 février 2018 - 10 août 2014 à 22:26
KEVIN471 Messages postés 30 Date d'inscription mercredi 2 juillet 2014 Statut Membre Dernière intervention 20 février 2018 - 15 août 2014 à 11:05
Bonjour
Je me suis actuellement lancé dans la programmation d'un jeux de puissance 4.
Pour ceci j'utilise d'abord le module graphics programmé à partir de la Tk.


Le problème est une fois la fenêtre de jeux ouverte ou je veux appelée les fonctions «Jeton_rouge»,
«Jeton_jaune» et «Draw_jeton» dans la fonction «Play» pour pouvoir dessiner les jetons. Mais python ne reconnait pas ces fonctions et affiche un message d'erreur
Merci de m'aider.


voici le code:


from graphics.fenetres import *
from graphics.couleurs import *


f = Fenetre() # ouverture de la fenêtre d'acceuil
f.title("jeu du puissance 4")
zg = f.graphique(largeur = 1500,hauteur = 800,couleur = bleu)
p=Point(750,400)
zg.aff_texte("Puissance 4",p,taille=50,police='arial',couleur='Yellow',
souligne = 'N',gras='N',italique='N')
p=Point(750,750)
zg.aff_texte("2014-copyright",p,taille=20,police='arial',couleur='Yellow',
souligne = 'N',gras='N',italique='N')



def Jeton_rouge(event):
"Dessine un cercle rouge ou le clik a été fait sur la page de jeux"
p = Point(event.x,event.y)
zgf.draw_fill_circle(p,50,rouge)



def Jeton_jaune(event):
"Dessine un cercle jaune ou le clik a été fait sur la page de jeux"
p = Point(event.x,event.y)
zgf.draw_fill_circle(p,50,jaune)


def draw_jetons():
zgf.bind('<Button-1>',Jeton_rouge)
zgf.bind('<Button-3>',Jeton_jaune)



def Shut(): #fonction detruit page acceuil après le clik sur le bouton quitter
f.destroy()

def Play(): #fonction ouvre la page de jeux aprés le clik sur le bouton jouer
f.destroy()
m=Fenetre()
m.title("C'est Parti !!!")
zgf = m.graphique(largeur = 1500,hauteur = 800,couleur = bleu)
p = Point(50,750)
q = Point(1450,750)
zgf.draw_line(p,q,jaune)
p = Point(50,750)
q = Point(50,50)
zgf.draw_line(p,q,jaune)
p = Point(1450,50)
q = Point(50,50)
zgf.draw_line(p,q,jaune)
p = Point(1450,50)
q = Point(1450,750)
zgf.draw_line(p,q,jaune)
p = Point(1450,50)
q = Point(1450,750)
zgf.draw_line(p,q,jaune)

p = Point(250,50)
q = Point(250,750)
zgf.draw_line(p,q,jaune)
p = Point(450,50)
q = Point(450,750)
zgf.draw_line(p,q,jaune)
p = Point(650,50)
q = Point(650,750)
zgf.draw_line(p,q,jaune)
p = Point(850,50)
q = Point(850,750)
zgf.draw_line(p,q,jaune)
p = Point(1050,50)
q = Point(1050,750)
zgf.draw_line(p,q,jaune)
p = Point(1250,50)
q = Point(1250,750)
zgf.draw_line(p,q,jaune)
p = Point(50,150)
q = Point(1450,150)
zgf.draw_line(p,q,jaune)
p = Point(50,250)
q = Point(1450,250)
zgf.draw_line(p,q,jaune)
p = Point(50,350)
q = Point(1450,350)
zgf.draw_line(p,q,jaune)
p = Point(50,450)
q = Point(1450,450)
zgf.draw_line(p,q,jaune)
p = Point(50,550)
q = Point(1450,550)
zgf.draw_line(p,q,jaune)
p = Point(50,650)
q = Point(1450,650)
zgf.draw_line(p,q,jaune)
Jeton_rouge(event)
Jeton_jaune(event)
draw_jetons()




#Deux boutons créer: un qui permet de jouer l'autre de quitter le jeux

b=f.bouton(largeur = 30, hauteur=5,texte = "Jouer",alignement = 'gauche_bas')
b.configure(bg = rouge)
b.configure(fg = jaune)
b.configure(command = Play)
c=f.bouton(largeur = 30,hauteur=5,texte = "Quitter",alignement = 'droite_bas')
c.configure(bg = rouge)
c.configure(fg = jaune)
c.configure(command = Shut)
A voir également:

4 réponses

Utilisateur anonyme
13 août 2014 à 22:00
zgf n'est peut-être pas une variable globale si cette variable n'est pas importé par ton module graphics.

Pour moi le problème est zgf construit dans play

Voici un exemple concret pour expliquer le soucis

>>> def test():
...     l.append(5)
... 
>>> def verify():
...     l = [1, 2]
...     test()
...     return l
... 
>>> verify()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in verify
  File "<stdin>", line 2, in test
NameError: name 'l' is not defined
1
Sans indentation un code python n'est rien qu'un tas de texte illisible.
0
KEVIN471 Messages postés 30 Date d'inscription mercredi 2 juillet 2014 Statut Membre Dernière intervention 20 février 2018 10
Modifié par KEVIN471 le 13/08/2014 à 20:03
Voila le code avec les indentations.
Petite chose: j'utilise l'IDLE de python (file puis new window)


from graphics.fenetres import *
from graphics.couleurs import *


f = Fenetre()     # ouverture de la fenêtre d'acceuil
f.title("jeu du puissance 4")
zg = f.graphique(largeur = 1500,hauteur = 800,couleur = bleu)
p=Point(750,400)
zg.aff_texte("Puissance 4",p,taille=50,police='arial',couleur='Yellow',
souligne = 'N',gras='N',italique='N')
p=Point(750,750)
zg.aff_texte("2014-copyright",p,taille=20,police='arial',couleur='Yellow',
souligne = 'N',gras='N',italique='N')



def Jeton_rouge(event):
    "Dessine un cercle rouge ou le clik a été fait sur la page de jeux"
    p = Point(event.x,event.y)
    zgf.draw_fill_circle(p,50,rouge)



def Jeton_jaune(event):
    "Dessine un cercle jaune ou le clik a été fait sur la page de jeux"
    p = Point(event.x,event.y)
    zgf.draw_fill_circle(p,50,jaune)


def draw_jetons():
    zgf.bind('<Button-1>',Jeton_rouge)
    zgf.bind('<Button-3>',Jeton_jaune)



def Shut():          #fonction detruit page acceuil après le clik sur le bouton quitter
    f.destroy()

def Play():          #fonction ouvre la page de jeux aprés le clik sur le bouton jouer
    f.destroy()
    m=Fenetre()
    m.title("C'est Parti !!!")
    zgf = m.graphique(largeur = 1500,hauteur = 800,couleur = bleu)
    p = Point(50,750)
    q = Point(1450,750)
    zgf.draw_line(p,q,jaune)
    p = Point(50,750)
    q = Point(50,50)
    zgf.draw_line(p,q,jaune)
    p = Point(1450,50)
    q = Point(50,50)
    zgf.draw_line(p,q,jaune)
    p = Point(1450,50)
    q = Point(1450,750)
    zgf.draw_line(p,q,jaune)
    p = Point(1450,50)
    q = Point(1450,750)
    zgf.draw_line(p,q,jaune)

    p = Point(250,50)
    q = Point(250,750)
    zgf.draw_line(p,q,jaune)
    p = Point(450,50)
    q = Point(450,750)
    zgf.draw_line(p,q,jaune)
    p = Point(650,50)
    q = Point(650,750)
    zgf.draw_line(p,q,jaune)
    p = Point(850,50)
    q = Point(850,750)
    zgf.draw_line(p,q,jaune)
    p = Point(1050,50)
    q = Point(1050,750)
    zgf.draw_line(p,q,jaune)
    p = Point(1250,50)
    q = Point(1250,750)
    zgf.draw_line(p,q,jaune)
    p = Point(50,150)
    q = Point(1450,150)
    zgf.draw_line(p,q,jaune)
    p = Point(50,250)
    q = Point(1450,250)
    zgf.draw_line(p,q,jaune)
    p = Point(50,350)
    q = Point(1450,350)
    zgf.draw_line(p,q,jaune)
    p = Point(50,450)
    q = Point(1450,450)
    zgf.draw_line(p,q,jaune)
    p = Point(50,550)
    q = Point(1450,550)
    zgf.draw_line(p,q,jaune)
    p = Point(50,650)
    q = Point(1450,650)
    zgf.draw_line(p,q,jaune)
    Jeton_rouge(event)
    Jeton_jaune(event)
    draw_jetons()


       

#Deux boutons créer:  un qui permet de jouer l'autre de quitter le jeux

b=f.bouton(largeur = 30, hauteur=5,texte = "Jouer",alignement = 'gauche_bas')
b.configure(bg = rouge)
b.configure(fg = jaune)
b.configure(command = Play)
c=f.bouton(largeur = 30,hauteur=5,texte = "Quitter",alignement = 'droite_bas')
c.configure(bg = rouge)
c.configure(fg = jaune)
c.configure(command = Shut)
0
KEVIN471 Messages postés 30 Date d'inscription mercredi 2 juillet 2014 Statut Membre Dernière intervention 20 février 2018 10
Modifié par KEVIN471 le 15/08/2014 à 11:07
J'ai remplacé zgf par zg (la variable étant reconnue par le module) mais cette fois le problème se trouve lorsque j'appelle les fonctions Jeton_rouge et Jeton_jaune dans la fonction play. L'argument event attribué aux fonction Jeton_rouge et Jeton_jaune n'est pas reconnue par la console. Quand je l'enlève la console me répond qu'il manque un l'argument event.
0