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 :

Problème de déplacement du personnage sur Pygame


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 20
    Points : 9
    Points
    9
    Par défaut Problème de déplacement du personnage sur Pygame
    Bonjour, ou bonsoir, voila je suis un étudiant de Terminale en spécialité ISN (Informatique, Science du Numérique) nous sommes sensés concevoir un programme python ou html avec nos acquis de l'année. J'ai décidé de faire un jeu du type labyrinthe sauf que voila, mon personnage se déplace mal il semble qu'il réinitialise les coordonnées du rect à chaque fois que j'appuie sur une touche différente (haut, bas droite, gauche)
    Je vous prie de faire en sorte de me fournir des réponses claires, je ne suis pas un programmateur confirmé, juste un débutant
    Merci d'avance !

    Voila le code !

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    #This python file uses the following encoding: utf-8
    #Game project
    import pygame,sys
    from pygame.locals import*
    pygame.init()
     
    def game():
     
        screen = pygame.display.set_mode((600,600)) #Définition de l'écran
        pygame.display.set_caption('DK Maze')
        dk_bas = pygame.image.load('dk_bas.png')
        dk_haut = pygame.image.load('dk_haut.png')
        dk_gauche = pygame.image.load('dk_gauche.png')
        #Définition des images à afficher
        dk_droite = pygame.image.load('dk_droite.png') 
        end = pygame.image.load('end.png')
        mur = pygame.image.load('mur.png')
        start = pygame.image.load('start.png')
        fond = pygame.image.load('fond.png')
        fond = pygame.transform.scale(fond,[600,600])
        home_screen = pygame.image.load('home.png')
        home_screen = pygame.transform.scale(home_screen,[600,600])
        image_vide=pygame.image.load("vide.png")
        lampe = pygame.image.load('lampe.png')
        lampe = pygame.transform.scale(lampe,[600,600])
        image_fond = home_screen
     
     
     
     
        dk_bas_pos = dk_bas.get_rect() #Transformation en .rect du personnage
     
        dk_haut_pos = dk_haut.get_rect()
     
        dk_gauche_pos = dk_gauche.get_rect()
     
        dk_droite_pos = dk_droite.get_rect()
     
        lampe_pos = lampe.get_rect()
     
     
     
        while True: #Menu
            pygame.display.update(screen.blit(image_fond,(0,0)))
     
     
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
     
     
                if event.type == KEYDOWN:
                    if event.key == K_F1:
                        image_fond= image_vide
                        pygame.display.update(screen.blit(fond,(0,0)))
                        pygame.display.update(screen.blit(end,(550,550)))
                        pygame.display.update(screen.blit(start,(0,0)))
                        pygame.display.update(screen.blit(lampe,(-300,-300)))
     
     
                if event.type == KEYDOWN:
                    if event.key == K_RIGHT:
                        pygame.time.Clock().tick(50) 
                        dk_droite_pos = dk_droite_pos.move(10,0)
                        lampe_pos = lampe_pos.move(10,0)
     
                        pygame.display.update(screen.blit(fond,(0,0)))
                        pygame.display.update(screen.blit(end,(550,550)))
                        pygame.display.update(screen.blit(start,(0,0)))
     
                        pygame.display.update(screen.blit(dk_droite,dk_droite_pos))
                        pygame.display.update(screen.blit(lampe,lampe_pos))
     
     
                if event.type == KEYDOWN:
                    if event.key == K_LEFT:
                        pygame.time.Clock().tick(50) 
                        dk_gauche_pos = dk_gauche_pos.move(-10,0)
                        lampe_pos = lampe_pos.move(-10,0)
     
                        pygame.display.update(screen.blit(fond,(0,0)))
                        pygame.display.update(screen.blit(end,(550,550)))
                        pygame.display.update(screen.blit(start,(0,0)))
     
                        pygame.display.update(screen.blit(dk_gauche,dk_gauche_pos))
                        pygame.display.update(screen.blit(lampe,lampe_pos))
     
     
                if event.type == KEYDOWN:
                    if event.key == K_DOWN:
                        pygame.time.Clock().tick(50) 
                        dk_bas_pos = dk_bas_pos.move(0,10)
                        lampe_pos = lampe_pos.move(0,10)
                        pygame.display.update(screen.blit(fond,(0,0)))
                        pygame.display.update(screen.blit(end,(550,550)))
                        pygame.display.update(screen.blit(start,(0,0)))
     
                        pygame.display.update(screen.blit(dk_bas,dk_bas_pos))
                        pygame.display.update(screen.blit(lampe,lampe_pos))
     
                if event.type == KEYDOWN:
                    if event.key == K_UP:
                        pygame.time.Clock().tick(50)
                        dk_haut_pos = dk_haut_pos.move(0,-10)
                        lampe_pos = lampe_pos.move(0,-10)
                        pygame.display.update(screen.blit(fond,(0,0)))
                        pygame.display.update(screen.blit(end,(550,550)))
                        pygame.display.update(screen.blit(start,(0,0)))
     
                        pygame.display.update(screen.blit(dk_haut,dk_haut_pos))
                        pygame.display.update(screen.blit(lampe,lampe_pos))
     
     
     
     
     
    if __name__ == '__main__':
        game()
    les image ont en effet été prises sur un site, mais c'est juste un support.
    Merci de vos réponses !

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 32
    Points : 36
    Points
    36
    Par défaut
    Je vois qu'il y a une "lampe" qui ce déplace également, celle-ci se déplace-t-elle correctement ?
    Si oui, alors remplace tout les dk_haut_pos ; dk_bas_pos ; dk_droite_pos ; dk_haut_pos par une seul et même variable comme pour la lampe.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 20
    Points : 9
    Points
    9
    Par défaut Même variable ?
    Oui la "lampe" est une image vide au milieu et noire autour afin de simuler l'éclairage d'une lampe, mais comment je fais pour définir une seule variable pour quatre image différentes ?
    et ensuite comment je déplace les images différentes ?

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 32
    Points : 36
    Points
    36
    Par défaut
    Tu fais comme pour la lampe, pour le personnage tu as juste la variable dk_pos.
    Tu l'initialise avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dk_pos = dk_bas.get_rect()

    Et lorsque tu déplace ton personnage tu fais (pour le déplacement à droite):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dk_pos = dk_pos.move(10,0)
    En remplaçant les coordonnées de déplacement en fonction.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    L'initialisation de la variable dk_pos je la fait dnas les boucles d'évenements ou avant, parce que j'ai quatre images différentes à déplacer

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    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
     dk_pos = dk_bas.get_rect()
     
     
     
     
     
     
     
        while True: #Menu
            pygame.time.Clock().tick(30)
            screen.blit(image_fond,(0,0))
            pygame.display.update()
     
     
     
     
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
     
                #Choix du niveau 1
                elif event.type == KEYDOWN:
                    if event.key == K_F1:
                        image_fond= image_vide
                        pygame.display.update(screen.blit(fond,(0,0)))
                        pygame.display.update(screen.blit(end,(550,550)))
                        pygame.display.update(screen.blit(start,(0,0)))
     
                    elif event.key == K_RIGHT:
     
                        dk_pos = dk_droite.get_rect()
                        dk_pos = dk_pos.move(10,0)
                        pygame.display.update(screen.blit(fond,(0,0)))
                        pygame.display.update(screen.blit(end,(550,550)))
                        pygame.display.update(screen.blit(start,(0,0)))
                        pygame.display.update(screen.blit(dk_droite,dk_pos))
     
                    elif event.key == K_LEFT:
     
                        dk_pos = dk_gauche.get_rect()
     
                        dk_pos = dk_pos.move(-10,0)
                        pygame.display.update(screen.blit(fond,(0,0)))
                        pygame.display.update(screen.blit(end,(550,550)))
                        pygame.display.update(screen.blit(start,(0,0)))
                        pygame.display.update(screen.blit(dk_gauche,dk_pos))
     
                    elif event.key == K_DOWN:
     
                        dk_pos = dk_bas.get_rect()
                        dk_pos = dk_pos.move(0,10)
                        pygame.display.update(screen.blit(fond,(0,0)))
                        pygame.display.update(screen.blit(end,(550,550)))
                        pygame.display.update(screen.blit(start,(0,0)))
                        pygame.display.update(screen.blit(dk_bas,dk_pos))
     
                    elif event.key == K_UP:
     
                        dk_pos = dk_gauche.get_rect()
                        dk_pos = dk_pos.move(0,-10)
                        pygame.display.update(screen.blit(fond,(0,0)))
                        pygame.display.update(screen.blit(end,(550,550)))
                        pygame.display.update(screen.blit(start,(0,0)))
                        pygame.display.update(screen.blit(dk_haut,dk_pos))
    Le personnage ne bouge pas il reste à 0,0

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 20
    Points : 9
    Points
    9
    Par défaut THANKS A LOT !
    Merci à tous ! sa fonctionne !

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Au cas où quelqu'un d'autre aurait le même problême, voila le code !

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    #This python file uses the following encoding: utf-8
    #Game project
    import pygame,sys
    from pygame.locals import*
    pygame.init()
     
    def game():
     
        screen = pygame.display.set_mode((600,600)) #Définition de l'écran
        pygame.display.set_caption('DK Maze')
        dk_bas = pygame.image.load('dk_bas.png')
        dk_haut = pygame.image.load('dk_haut.png')
        dk_gauche = pygame.image.load('dk_gauche.png')
     
        dk_droite = pygame.image.load('dk_droite.png') 
        end = pygame.image.load('end.png')
        mur = pygame.image.load('mur.png')
        start = pygame.image.load('start.png')
        fond = pygame.image.load('fond.png')
        fond = pygame.transform.scale(fond,[600,600])
        home_screen = pygame.image.load('home.png')
        home_screen = pygame.transform.scale(home_screen,[600,600])
        image_vide=pygame.image.load("vide.png")
        image_fond = home_screen
        dk_pos = dk_bas.get_rect()
     
        while True: #Menu
            pygame.time.Clock().tick(30)
            screen.blit(image_fond,(0,0))
            pygame.display.update()
     
     
     
     
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
     
                #Choix du niveau 1
                elif event.type == KEYDOWN:
                    if event.key == K_F1:
                        image_fond= image_vide
                        pygame.display.update(screen.blit(fond,(0,0)))
                        pygame.display.update(screen.blit(end,(550,550)))
                        pygame.display.update(screen.blit(start,(0,0)))
     
                    elif event.key == K_RIGHT:
     
     
                        dk_pos = dk_pos.move(10,0)
                        pygame.display.update(screen.blit(fond,(0,0)))
                        pygame.display.update(screen.blit(end,(550,550)))
                        pygame.display.update(screen.blit(start,(0,0)))
                        pygame.display.update(screen.blit(dk_droite,dk_pos))
     
                    elif event.key == K_LEFT:
     
     
     
                        dk_pos = dk_pos.move(-10,0)
                        pygame.display.update(screen.blit(fond,(0,0)))
                        pygame.display.update(screen.blit(end,(550,550)))
                        pygame.display.update(screen.blit(start,(0,0)))
                        pygame.display.update(screen.blit(dk_gauche,dk_pos))
     
                    elif event.key == K_DOWN:
     
     
                        dk_pos = dk_pos.move(0,10)
                        pygame.display.update(screen.blit(fond,(0,0)))
                        pygame.display.update(screen.blit(end,(550,550)))
                        pygame.display.update(screen.blit(start,(0,0)))
                        pygame.display.update(screen.blit(dk_bas,dk_pos))
     
                    elif event.key == K_UP:
     
     
                        dk_pos = dk_pos.move(0,-10)
                        pygame.display.update(screen.blit(fond,(0,0)))
                        pygame.display.update(screen.blit(end,(550,550)))
                        pygame.display.update(screen.blit(start,(0,0)))
                        pygame.display.update(screen.blit(dk_haut,dk_pos))
     
     
     
    if __name__ == '__main__':
        game()
    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de déplacement du personnage sur Pygame
    Par Youpat97 dans le forum Général Python
    Réponses: 15
    Dernier message: 24/04/2013, 00h42
  2. déplacement personnage sur page Web
    Par dragonno dans le forum Débuter
    Réponses: 3
    Dernier message: 04/03/2013, 19h24
  3. Problème de déplacement de fichier sur le Disque Dur
    Par DeFCrew dans le forum Sécurité
    Réponses: 8
    Dernier message: 11/09/2006, 11h44
  4. Réponses: 2
    Dernier message: 26/07/2006, 00h33
  5. Réponses: 5
    Dernier message: 27/08/2003, 11h45

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