Erreur missing 1 required positional argument: 'self'

Fermé
babe_tiger - Modifié le 15 mai 2021 à 11:15
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 15 mai 2021 à 17:24
Bonjour,



quelqu'un peut m'aider à trouver l'erreur sur ce code svp.
from tkinter import*
import time
tk = Tk()
tk.title("Name game")
tk.resizable(0, 0)
tk.wm_attributes("-topmost", 1)
canvas = Canvas(tk, width=1200, height=800, bd=0, highlightthickness=0)
canvas.pack()
tk.update()



class jeu:
    #Cette classe regroupe toute les autres class
    pass
        
    
class joueur(jeu, object):
    ###script du joueur
    def __init__(self, canvas, couleur):
        self.canvas = canvas
        self.x = 0
        self.y = 0
        self.id = canvas.create_oval(10, 10, 25, 25, fill = couleur)
        self.canvas.move(self.id, 80, 70)
        self.hauteur_canevas = self.canvas.winfo_height()
        self.largeur_canevas = self.canvas.winfo_width()
        
    def gauche(self, evt):
        self.x = -3
    def droite(self, evt):
        self.x = 3
    def stop(self, evt):
        self.x = 0
    def bouger(self):
        self.canvas.bind_all('<KeyPress-Left>', self.gauche)
        self.canvas.bind_all('<KeyPress-Right>', self.droite)
        self.canvas.bind_all('<space>', self.stop)

        self.canvas.move(self.id, self.x, 0)
        pos = self.canvas.coords(self.id)
        
        print("valeur x : " + str(pos[0]))
        if pos[1] <= 0:
            self.y = 0
        if pos[3] >= self.hauteur_canevas:
            self.y = 0
        if pos[0] <= 0:
            self.x = 0
        if pos[2] >= self.largeur_canevas:
            self.x = 0
class carte(jeu, object):
    ###script de la map
    def __init__(self, canvas, couleur):
        self.canvas = canvas
        self.id = canvas.create_rectangle(150, 30, 5, 150, fill = couleur)
        self.canvas.move(self.id, 100, 0)
        self.id2 = canvas.create_rectangle(150, 30, 5, 150, fill = couleur)
        self.canvas.move(self.id2, 245, 0)
        self.id3 = canvas.create_rectangle(150, 30, 5, 150, fill = couleur)
        self.canvas.move(self.id3, 390, 0)
        self.id4 = canvas.create_rectangle(150, 30, 5, 150, fill = couleur)
        self.canvas.move(self.id4, 535, 0)
    
       
jeu = jeu()
while True:
    
<bold>    mouvement = joueur.bouger()</bold> l'erreur est à cette ligne<bold></bold>
    tk.update_idletasks()
    tk.update()
    time.sleep(0.01)

1 réponse

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
15 mai 2021 à 12:02
As-tu créer une instance de "joueur" pour appeler sa méthode ?
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
15 mai 2021 à 17:24
par exemple:
    monjoueur=joueur(canvas,"red")
    mouvement = monjoueur.bouger()
0