IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Aide programmation python 3.X de déplacement d'un personnage.


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 1
    Par défaut Aide programmation python 3.X de déplacement d'un personnage.
    Bonjour, Bonsoir à tous!

    Je me permet de créé un poste pour vous demander de l'aide.
    Je suis actuellement en terminal S, spécialité ISN et je n'ai malheureusement pas un seul prof à ma disposition.

    J'aimerais, comme dit dans l'intitulé, programmé les mouvements de mon personnages a l'aide des touches directionnels. Cependant, je veut programmé deux type de déplacement: un vue de dessus à la Binding of Isaac et un de profil à la Rogue Legacy, celui-ci ayant un système de "pesanteur" pour pouvoir sauter et retomber).
    J'ai commencer un programme qui lorsque j'appuie sur jouer, me lance une zone de déplacement avec un carré que je suis censé pouvoir déplacé mais je n'y arrive pas. J'ai cependant constaté que dans ma fenêtre d’accueil, où se trouve le bouton "Jouer" et "Quitter", lorsque j'appuie sur les touches et qu'ensuite je lance Jouer, le carré s'est déplacé.
    J'aimerais donc savoir pourquoi, lorsque je suis sur la fenêtre où je peut voir le carré, je ne peut pas le déplacer.

    Je vous met ci-joint le programme,

    En vous remerciant de votre aide,
    Cordialement,
    Je ne sais pas c'est quoi mon pseudo.

    PS : désolé pour mon français non exemplaire, je suis un peu fatigué en ce moment. Et si vous savez comment on met les indices en "spoils" je suis preneur, j'ai oublié avec le temps.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    from tkinter import*
    ##from tkinter.messagebox import*
    from math import*
    from random import*
    ##from tkinter.filedialog import*
     
    fenetre = Tk()
    fenetre.title("My Game")
    coords = (0,0)
     
    def Up (event):
        global coords
        touche=event.keysym
        if touche == "Up":
              coords = (coords[0], coords[1] - 9)
    def Down (event):
        global coords
        touche=event.keysym
        if touche == "Down":
            coords = (coords[0], coords[1] + 9)
    def Right (event):
        global coords
        touche=event.keysym
        if touche == "Right":
            coords = (coords[0] + 9, coords[1])
    def Left (event):
        global coords
        touche=event.keysym
        if touche == "Left":
            coords = (coords[0] - 9, coords[1])
    def Return (event):
        touche=event.keysym
        if touche == "Return":
            Jouer
    def Escape (event):
        touche=event.keysym
        if touche == "Escape":
            fenetre.destroy
     
    fenetre.bind('<Up>',Up)
    fenetre.bind('<Down>', Down)
    fenetre.bind('<Right>', Right)
    fenetre.bind('<Left>', Left)
    fenetre.bind('<Return>', Return)
    fenetre.bind('<Escape>', Escape)
     
    def Jouer():
        global coords, clavier
        can.grid_forget()
        boutonQ.grid_forget()
        boutonJ.grid_forget()
        canvas = Canvas(fenetre, width=800, height=600, bg="white")
        rectangle = canvas.create_rectangle(0,0,12,12,fill="green")
        canvas.coords(rectangle, coords[0], coords[1], coords[0]+9, coords[1]+9)
        canvas.focus_set()
        canvas.bind("<Key>")
        canvas.grid()
     
    photointro=PhotoImage(file="Monstro.png")
    can = Canvas(fenetre,bg='white',width=300, height=150)
    img=can.create_image(0,0,anchor='nw',image=photointro)
    can.grid(row=0,column=0,columnspan=2,sticky=N+S+E+W,padx=4,pady=4)
     
    boutonJ=Button(fenetre, text="  JOUER  ",font=('arial',15), command=Jouer)
    boutonJ.grid(row=1,column=0,sticky=W,padx=2,pady=2)
     
    boutonQ=Button(fenetre, text="QUITTER",font=('arial',15), command=fenetre.quit)
    boutonQ.grid(row=1,column=1,sticky=E,padx=2,pady=2)
     
    fenetre.mainloop()

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 737
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 737
    Par défaut
    Salut,

    Dans votre code, vous vous contentez de mettre à jour "coords" mais vous ne déplacer pas l'item "image". De plus vous avez quelques appels de fonction "Jouer", ligne 34, "fenetre.destroy" ligne 38 qui ne seront pas exécutées car il manque les "()".
    Pour le reste, c'est un peu compliqué, j'écrirai çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    import tkinter as tk
     
    def reset(): 
        items = canvas.find_withtag('figure')
        if not len(items):
            canvas.create_rectangle(20,20,50,50,tag='figure')
        else:
            canvas.coords('figure', 20,20,50,50)
     
    motions = { 
        "Up": (0, -1),
        "Down": (0, 1),
        "Left": (-1, 0),
        "Right": (1, 0),
        }
     
    def on_move(event):
        canvas = event.widget
        dx, dy = motions[event.keysym]
        canvas.move('figure', 10*dx, 10*dy)
     
    canvas = tk.Canvas(bg='grey50', height=480, width=840)
    canvas.grid(row=0, column=0, columnspan=2)
    canvas.focus_set()
     
    for name in ("<Up>", "<Right>", "<Down>", "<Left>"):
        canvas.bind(name, on_move)
     
    w = tk.Button(text="Nouveau Jeu", command=reset)
    w.grid(row =1, column=0, sticky='ew', padx=5)
    w = tk.Button(text="Quitter", command=canvas.quit)
    w.grid(row =1, column=1, sticky='ew')
     
    tk.mainloop()
    (mouture sortie d'un ancien post)

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo