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

Programmation multimédia/Jeux Python Discussion :

Animation / déplacement Pac-man


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut Animation / déplacement Pac-man
    Bonjour à tous,

    Avec un ami nous nous sommes répartis les tâches pour essayer de faire un Pac-Man. Cependant je bute à un moment. Dans un document "vierge" (donc sans carte du jeu Pac-Man) je voudrais simplement arriver à faire aller le Pac-Man dans tous les sens. J'ai fait un programme, mais seulement le personnage ne se déplace que dans l'ordre de mes def. Je suis assez novice en programmation, quelqu'un pourrait-il m'aider sur mon problème ?

    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
    71
    72
    73
     
    from tkinter import*
     
    def droite():
     
        global x, y, diapo
        x=x+4
        diapo=diapo+1
        if diapo==2:
            diapo=0
        cadre.itemconfig(personnage,image=liste[diapo])
        cadre.coords(personnage,x,y)
     
    def gauche():
     
        global x, y, diapo
        x=x-4
        diapo=diapo+1
        if diapo==4:
            diapo=2
        cadre.itemconfig(personnage,image=liste[diapo])
        cadre.coords(personnage,x,y)
     
    def haut():
        global y, x, diapo
        y=y-4
        diapo=diapo+1
        if diapo==6:
            diapo=4
        cadre.itemconfig(personnage,image=liste[diapo])
        cadre.coords(personnage,x,y)
     
    def bas():
        global y, x, diapo
        y=y+4
        diapo=diapo+1
        if diapo==8:
            diapo=6
        cadre.itemconfig(personnage,image=liste[diapo])
        cadre.coords(personnage,x,y)
     
    def touche(evt):
        if evt.keysym=="Right":
            droite()
     
        if evt.keysym=="Left":
            gauche()
     
        if evt.keysym=="Up":
            haut()
     
        if evt.keysym=="Down":
            bas()
     
     
     
    f=Tk()
    f.title("Animation")
    f.geometry()
    diapo=0
    x, y = 250, 250
    cadre = Canvas (f, width =1000, height =1000, bg="white")
    cadre.pack()
    liste=[]
    for i in range (0,8):
          liste.append(PhotoImage(file='pacman'+str(i)+'.gif'))
    personnage=cadre.create_image(x,y,image=liste[0]) # pose la première image
    f.bind("<Key>",touche)
     
     
     
     
    f.mainloop()
    Merci d'avance pour votre aide, et bonne soirée à vous !

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Tu peux préciser le problème ?

    Ton pacman se déplace correctement chez moi.

    Par contre la valeur de diapo finit par dépasser le nombre d'images de la liste et on arrive à un indx out of range mais, ça, tu devrais pouvoir y remédier

  3. #3
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    Bonsoir,

    J'ai 8 images en tout :

    Pacman0
    Pacman1 --> Pour aller à droite

    Pacman2
    Pacman3 --> Pour aller à gauche

    Pacman4
    Pacman5 --> Pour aller vers le haut

    Pacman6
    Pacman7 --> Pour aller vers le bas

    Chez moi mon Pac-Man ne se déplace que si j'appuie sur la flèche droite, puis la gauche, puis le haut, puis le bas, donc dans l'ordre de mes def que j'ai mis dans le programme.

    Merci pour ton aide

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Sans aucune modifications de ton code, le pacman se déplace dans toutes les directions dans n'importe quel ordre.

    D'ailleurs ton code n'expliquerait pas ce que tu décris.

    Peut-être que tu y as modifié quelque chose, essaye avec le code publié ici.

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Je crois comprendre quelque chose.

    Comme je ne me suis pas amusé à créer huit pacmans différent, j'ai utilisé huit fois la même image.

    En relisant ton code il apparaît effectivement un problème, autre que celui que tu décris, c'est que l'orientation du personnage n'est pas exacte par rapport à son déplacement, ce que je ne pouvais pas voir.

    Essaye comme ceci:
    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
     
    def droite():
        global x, y, diapo
        x=x+4
        if diapo == 0:
            diapo = 1
        else:
            diapo = 0
        cadre.itemconfig(personnage,image=liste[diapo])
        cadre.coords(personnage,x,y)
     
    def gauche():
        global x, y, diapo
        x=x-4
        if diapo == 2:
            diapo = 3
        else:
            diapo = 2
        cadre.itemconfig(personnage,image=liste[diapo])
        cadre.coords(personnage,x,y)
     
    def haut():
        global y, x, diapo
        y=y-4
        if diapo == 4:
            diapo = 5
        else:
            diapo = 4
        cadre.itemconfig(personnage,image=liste[diapo])
        cadre.coords(personnage,x,y)
     
    def bas():
        global y, x, diapo
        y=y+4
        if diapo == 6:
            diapo = 7
        else:
            diapo = 6
        cadre.itemconfig(personnage,image=liste[diapo])
        cadre.coords(personnage,x,y)
    Et essaye de comprendre la logique de tout cela.

  6. #6
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    Je t'ai mis en ZIP mon programme ainsi que mes images pour que tu vois. Je viens encore d'essayer, quand je monte ça va, et quand je vais à gauche par exemple ça plante. Avant de poster sur ce forum j'avais essayé de multiples combinaisons (avec les diapo=... par exemple), mais rien n'y fait...
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip PM.zip (56,7 Ko, 221 affichages)

  7. #7
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    Oups désolé on a posté le message au même moment.

    Oui effectivement ta modification marche parfaitement bien ! Mais je ne comprends pas l'intérêt du else ici ?

  8. #8
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    Quelqu'un pourrait-il m'éclaircir sur la fonction du "else" ici ?

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Le else s'applique pour les autres valeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    def droite():
        global x, y, diapo
        x=x+4
        if diapo == 0:  # Combien de valeurs possibles ?   8
            diapo = 1   # Dans le cas 0 on bascule en 1
        else:
            diapo = 0   # Dans tous les autres cas on applique l'image 0

  10. #10
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    Merci pour la réponse. Donc le else permet de revenir à la première image posée dans le def c'est ça ?

  11. #11
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Pour le dire autrement, si le pacman est dans la "bonne direction bouche ouverte" on le change en "bonne direction bouche fermée". Ça c'est le if.

    Dans les sept autres cas, le else, on le change en "bonne direction bouche ouverte".

  12. #12
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    D'accord merci beaucoup c'est très clair ! Merci pour la rapidité et la qualité surtout de la réponse !

    Bonne soirée, à bientôt !

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/01/2015, 09h12
  2. [Projet terminé] Danny The Boss [ Pac Man Like ]
    Par Vetea dans le forum Projets
    Réponses: 276
    Dernier message: 06/05/2014, 16h39
  3. [Turbo Pascal] Gnasher v. 24 (variante du Pac-Man)
    Par Alcatîz dans le forum Codes sources à télécharger
    Réponses: 2
    Dernier message: 07/11/2010, 18h57
  4. Google Pac-Man : comment font-ils ?
    Par Christophe P. dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 25/05/2010, 11h58
  5. [Humour]Pac Man est mort !
    Par LadyWasky dans le forum La taverne du Club : Humour et divers
    Réponses: 6
    Dernier message: 21/06/2007, 21h20

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