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 :

Problème de déplacement du personnage sur Pygame


Sujet :

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
    Bonsoir à tous, voilà un programme qui est l'objet d'un projet scolaire pour le BAC 2013 (option ISN). L'exemple à été pris en effet sur un site, mais les images seront changées, seul le fond du programme m’intéresse. Cependant, il semblerait qu'il y ait un bug pour déplacer le personnage
    Pourriez-vous m'aider au plus vite ?
    Merci d'avance !

    voilà le programme:

    #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('dk_home.png')
    home_screen = pygame.transform.scale(home_screen,[600,600])
    image_vide=pygame.image.load("vide.png")
    image_fond = home_screen

    screen.blit(fond,(0,0))
    screen.blit(start,(0,0))
    screen.blit(end,(550,550))
    screen.blit(home_screen,(0,0))

    x = 0
    y = 0

    dk_bas_pos = dk_bas.get_rect() #Transformation en .rect du personnage
    screen.blit(dk_bas,dk_bas_pos)
    screen.blit(dk_bas,(x,y))
    dk_haut_pos = dk_haut.get_rect()
    screen.blit(dk_haut,dk_haut_pos)
    screen.blit(dk_haut,(x,y))
    dk_gauche_pos = dk_gauche.get_rect()
    screen.blit(dk_gauche,dk_gauche_pos)
    screen.blit(dk_gauche,(x,y))
    dk_droite_pos = dk_droite.get_rect()
    screen.blit(dk_droite,dk_droite_pos)
    screen.blit(dk_droite,(x,y))



    while True:
    pygame.time.Clock().tick(30) #Menu
    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
    if event.type == KEYDOWN:
    if event.key == K_F1:
    image_fond= image_vide
    screen.blit(fond,(0,0))
    screen.blit(start,(0,0))
    screen.blit(end,(435,435))
    screen.blit(dk_bas,dk_bas_pos)
    screen.blit(dk_bas,(x,y))
    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(dk_bas,(x,y)))



    #Déplacement à droite
    if event.type == KEYDOWN:
    if event.key == K_RIGHT:
    x+=10
    y=0
    screen.blit(dk_droite,dk_droite_pos)
    screen.blit(dk_droite,(x,y))
    dk_droite = dk_droite_pos.move(x,y)
    pygame.display.update(screen.blit(dk_droite,dk_droite_pos))
    pygame.display.update(screen.blit(dk_droite,(x,y)))


    #Déplacement à gauche
    if event.type == KEYDOWN:
    if event.key == K_LEFT:
    x-=10
    y=0
    screen.blit(dk_gauche,dk_gauche_pos)
    screen.blit(dk_gauche,(x,y))
    dk_gauche = dk_gauche_pos.move(x,y)
    pygame.display.update(screen.blit(dk_gauche,dk_gauche_pos))
    pygame.display.update(screen.blit(dk_gauche,(x,y)))
    pygame.display.update(fond,(0,0))

    #Déplacement en bas
    if event.type == KEYDOWN:
    if event.key == K_DOWN:
    x=0
    y+=10
    screen.blit(dk_bas,dk_bas_pos)
    screen.blit(dk_bas,(x,y))
    dk_bas = dk_bas_pos.move(x,y)
    pygame.display.update(screen.blit(dk_bas,dk_bas_pos))
    pygame.display.update(screen.blit(dk_bas,(x,y)))
    pygame.display.update(fond,(0,0))

    #Déplacement en haut
    if event.type == KEYDOWN:
    if event.key == K_UP:
    x=0
    y-=10
    screen.blit(dk_haut,dk_haut_pos)
    screen.blit(dk_haut,(x,y))
    dk_bas = dk_haut_pos.move(x,y)
    pygame.display.update(screen.blit(dk_haut,dk_haut_pos))
    pygame.display.update(screen.blit(dk_haut,(x,y)))
    pygame.display.update(fond,(0,0))



    if __name__ == '__main__':
    game()

  2. #2
    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
    etant nouveau, je ne sais pas si une mauvaise manipulation de ma part à enlevé l'édentation .. =$

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 064
    Points : 1 402
    Points
    1 402
    Par défaut
    Citation Envoyé par Youpat97 Voir le message
    etant nouveau, je ne sais pas si une mauvaise manipulation de ma part à enlevé l'édentation .. =$
    édites ton message; l'icone # fait apparaître 2 balises, mets ton code entre ces balises.

  4. #4
    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 Le bon programme
    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
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    #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('dk_home.png')
        home_screen = pygame.transform.scale(home_screen,[600,600])
        image_vide=pygame.image.load("vide.png")
        image_fond = home_screen
     
        screen.blit(fond,(0,0))
        screen.blit(start,(0,0))
        screen.blit(end,(550,550))
        screen.blit(home_screen,(0,0))
     
        x = 0
        y = 0
     
        dk_bas_pos = dk_bas.get_rect() #Transformation en .rect du personnage
        screen.blit(dk_bas,dk_bas_pos)
        screen.blit(dk_bas,(x,y))
        dk_haut_pos = dk_haut.get_rect()
        screen.blit(dk_haut,dk_haut_pos)
        screen.blit(dk_haut,(x,y))
        dk_gauche_pos = dk_gauche.get_rect()
        screen.blit(dk_gauche,dk_gauche_pos)
        screen.blit(dk_gauche,(x,y))
        dk_droite_pos = dk_droite.get_rect()
        screen.blit(dk_droite,dk_droite_pos)
        screen.blit(dk_droite,(x,y))
     
     
     
        while True:
            pygame.time.Clock().tick(30) #Menu
            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 
        if event.type == KEYDOWN:
            if event.key == K_F1:
                image_fond= image_vide
                screen.blit(fond,(0,0))
                screen.blit(start,(0,0))
                screen.blit(end,(435,435))
                screen.blit(dk_bas,dk_bas_pos)
                screen.blit(dk_bas,(x,y))
                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(dk_bas,(x,y)))
     
     
     
        #Déplacement à droite 
        if event.type == KEYDOWN:
            if event.key == K_RIGHT:
                x+=10
                y=0 
                screen.blit(dk_droite,dk_droite_pos)
                screen.blit(dk_droite,(x,y))
                dk_droite = dk_droite_pos.move(x,y)
                pygame.display.update(screen.blit(dk_droite,dk_droite_pos))
                pygame.display.update(screen.blit(dk_droite,(x,y)))
     
     
        #Déplacement à gauche
        if event.type == KEYDOWN:
            if event.key == K_LEFT:
                x-=10
                y=0
                screen.blit(dk_gauche,dk_gauche_pos) 
                screen.blit(dk_gauche,(x,y))
                dk_gauche = dk_gauche_pos.move(x,y)
                pygame.display.update(screen.blit(dk_gauche,dk_gauche_pos))
                pygame.display.update(screen.blit(dk_gauche,(x,y)))
                pygame.display.update(fond,(0,0))
     
        #Déplacement en bas 
        if event.type == KEYDOWN:
            if event.key == K_DOWN:
                x=0
                y+=10
                screen.blit(dk_bas,dk_bas_pos)
                screen.blit(dk_bas,(x,y))
                dk_bas = dk_bas_pos.move(x,y)
                pygame.display.update(screen.blit(dk_bas,dk_bas_pos))
                pygame.display.update(screen.blit(dk_bas,(x,y))) 
                pygame.display.update(fond,(0,0))
     
        #Déplacement en haut
        if event.type == KEYDOWN:
            if event.key == K_UP:
                x=0
                y-=10
                screen.blit(dk_haut,dk_haut_pos)
                screen.blit(dk_haut,(x,y))
                dk_bas = dk_haut_pos.move(x,y)
                pygame.display.update(screen.blit(dk_haut,dk_haut_pos))
                pygame.display.update(screen.blit(dk_haut,(x,y)))
                pygame.display.update(fond,(0,0))
     
     
     
    if __name__ == '__main__':
        game()

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 064
    Points : 1 402
    Points
    1 402
    Par défaut
    y a de gros problèmes d'indentation de blocs.

  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 Quels problèmes ?
    Au niveau du déplacement ? parce que pour le menu sa marche, c'est lors des déplacement que sa me dit que le premier argument de screen.blit doit être une surface

  7. #7
    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
    Il faut indenter à partir de la ligne 57. Ainsi le for se trouve dans la boucle while.
    Il faut indenter de nouveau à partir de la ligne 62. Ainsi toutes les condition event.type ce trouve das la boucle for (boucle qui sert à récupérer les évènements).

    Tu risque d'avoir un problème avec le déplacement du personnage si tu laisse les lignes: 82, 94, 105 et 117.

    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
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    #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('dk_home.png')
        home_screen = pygame.transform.scale(home_screen,[600,600])
        image_vide=pygame.image.load("vide.png")
        image_fond = home_screen
     
        screen.blit(fond,(0,0))
        screen.blit(start,(0,0))
        screen.blit(end,(550,550))
        screen.blit(home_screen,(0,0))
     
        x = 0
        y = 0
     
        dk_bas_pos = dk_bas.get_rect() #Transformation en .rect du personnage
        screen.blit(dk_bas,dk_bas_pos)
        screen.blit(dk_bas,(x,y))
        dk_haut_pos = dk_haut.get_rect()
        screen.blit(dk_haut,dk_haut_pos)
        screen.blit(dk_haut,(x,y))
        dk_gauche_pos = dk_gauche.get_rect()
        screen.blit(dk_gauche,dk_gauche_pos)
        screen.blit(dk_gauche,(x,y))
        dk_droite_pos = dk_droite.get_rect()
        screen.blit(dk_droite,dk_droite_pos)
        screen.blit(dk_droite,(x,y))
     
     
     
        while True:
            pygame.time.Clock().tick(30) #Menu
            screen.blit(image_fond,(0,0))
            pygame.display.update()
     
     
     
     
            for event in pygame.event.get(): #On indente le for pour qu'il soit dans la boucle while !
                if event.type == pygame.QUIT:
                    pygame.quit()
     
                #Choix du niveau 1
                if event.type == KEYDOWN: #On indente tous les event.type pour qu'ils soient dans la boucle for !
                    if event.key == K_F1:
                        image_fond= image_vide
                        screen.blit(fond,(0,0))
                        screen.blit(start,(0,0))
                        screen.blit(end,(435,435))
                        screen.blit(dk_bas,dk_bas_pos)
                        screen.blit(dk_bas,(x,y))
                        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(dk_bas,(x,y)))
     
     
     
                #Déplacement à droite
                if event.type == KEYDOWN:
                    if event.key == K_RIGHT:
                        x+=10
                        y=0 #A supprimer ?
                        screen.blit(dk_droite,dk_droite_pos)
                        screen.blit(dk_droite,(x,y))
                        dk_droite = dk_droite_pos.move(x,y)
                        pygame.display.update(screen.blit(dk_droite,dk_droite_pos))
                        pygame.display.update(screen.blit(dk_droite,(x,y)))
     
     
                #Déplacement à gauche
                if event.type == KEYDOWN:
                    if event.key == K_LEFT:
                        x-=10
                        y=0 #A supprimer ?
                        screen.blit(dk_gauche,dk_gauche_pos)
                        screen.blit(dk_gauche,(x,y))
                        dk_gauche = dk_gauche_pos.move(x,y)
                        pygame.display.update(screen.blit(dk_gauche,dk_gauche_pos))
                        pygame.display.update(screen.blit(dk_gauche,(x,y)))
                        pygame.display.update(fond,(0,0))
     
                #Déplacement en bas
                if event.type == KEYDOWN:
                    if event.key == K_DOWN:
                        x=0 #A supprimer ?
                        y+=10
                        screen.blit(dk_bas,dk_bas_pos)
                        screen.blit(dk_bas,(x,y))
                        dk_bas = dk_bas_pos.move(x,y)
                        pygame.display.update(screen.blit(dk_bas,dk_bas_pos))
                        pygame.display.update(screen.blit(dk_bas,(x,y)))
                        pygame.display.update(fond,(0,0))
     
                #Déplacement en haut
                if event.type == KEYDOWN:
                    if event.key == K_UP:
                        x=0 #A supprimer ?
                        y-=10
                        screen.blit(dk_haut,dk_haut_pos)
                        screen.blit(dk_haut,(x,y))
                        dk_bas = dk_haut_pos.move(x,y)
                        pygame.display.update(screen.blit(dk_haut,dk_haut_pos))
                        pygame.display.update(screen.blit(dk_haut,(x,y)))
                        pygame.display.update(fond,(0,0))
     
     
     
    if __name__ == '__main__':
        game()

  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 Remerciements
    Merci beaucoup j'essaie de ce pas de corriger tt

  9. #9
    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 Oups =$
    j'ai retiré les y=0 et x=0, indenté et tout et pourtant j'ai ce message ...
    Aurais-je transformé ma surface en rect ?
    Traceback (most recent call last):
    File "E:/Projet ISN/Dk_Game_new.py", line 124, in <module>
    game()
    File "E:/Projet ISN/Dk_Game_new.py", line 84, in game
    pygame.display.update(screen.blit(dk_droite,dk_droite_pos))
    TypeError: argument 1 must be pygame.Surface, not pygame.Rect

  10. #10
    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 Programme
    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
    119
    120
    121
    122
    123
    124
    #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")
        image_fond = home_screen
     
        screen.blit(fond,(0,0))
        screen.blit(start,(0,0))
        screen.blit(end,(550,550))
        screen.blit(home_screen,(0,0))
     
        x = 0
        y = 0
     
        dk_bas_pos = dk_bas.get_rect() #Transformation en .rect du personnage
        screen.blit(dk_bas,dk_bas_pos)
        screen.blit(dk_bas,(x,y))
        dk_haut_pos = dk_haut.get_rect()
        screen.blit(dk_haut,dk_haut_pos)
        screen.blit(dk_haut,(x,y))
        dk_gauche_pos = dk_gauche.get_rect()
        screen.blit(dk_gauche,dk_gauche_pos)
        screen.blit(dk_gauche,(x,y))
        dk_droite_pos = dk_droite.get_rect()
        screen.blit(dk_droite,dk_droite_pos)
        screen.blit(dk_droite,(x,y))
     
     
     
        while True:
            pygame.time.Clock().tick(30) #Menu
            screen.blit(image_fond,(0,0))
            pygame.display.update()
     
     
     
     
            for event in pygame.event.get(): #On indente le for pour qu'il soit dans la boucle while !
                    if event.type == pygame.QUIT:
                        pygame.quit()
     
                #Choix du niveau 1
                    if event.type == KEYDOWN and event.key == K_F1:
                        image_fond= image_vide
                        screen.blit(fond,(0,0))
                        screen.blit(start,(0,0))
                        screen.blit(end,(435,435))
                        screen.blit(dk_bas,dk_bas_pos)
                        screen.blit(dk_bas,(x,y))
                        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(dk_bas,(x,y)))
     
     
     
                #Déplacement à droite
                    if event.type == KEYDOWN and event.key == K_RIGHT:
                            x+=10
     
                            screen.blit(dk_droite,dk_droite_pos)
                            screen.blit(dk_droite,(x,y))
                            dk_droite = dk_droite_pos.move(x,y)
                            pygame.display.update(screen.blit(dk_droite,dk_droite_pos))
                            pygame.display.update(screen.blit(dk_droite,(x,y)))
     
     
                    #Déplacement à gauche
                    if event.type == KEYDOWN and event.key == K_LEFT:
                            x-=10
     
                            screen.blit(dk_gauche,dk_gauche_pos)
                            screen.blit(dk_gauche,(x,y))
                            dk_gauche = dk_gauche_pos.move(x,y)
                            pygame.display.update(screen.blit(dk_gauche,dk_gauche_pos))
                            pygame.display.update(screen.blit(dk_gauche,(x,y)))
                            pygame.display.update(fond,(0,0))
     
                    #Déplacement en bas
                    if event.type == KEYDOWN and event.key == K_DOWN:
     
                            y+=10
                            screen.blit(dk_bas,dk_bas_pos)
                            screen.blit(dk_bas,(x,y))
                            dk_bas = dk_bas_pos.move(x,y)
                            pygame.display.update(screen.blit(dk_bas,dk_bas_pos))
                            pygame.display.update(screen.blit(dk_bas,(x,y)))
                            pygame.display.update(fond,(0,0))
     
                    #Déplacement en haut
                    if event.type == KEYDOWN and event.key == K_UP:
     
                            y-=10
                            screen.blit(dk_haut,dk_haut_pos)
                            screen.blit(dk_haut,(x,y))
                            dk_bas = dk_haut_pos.move(x,y)
                            pygame.display.update(screen.blit(dk_haut,dk_haut_pos))
                            pygame.display.update(screen.blit(dk_haut,(x,y)))
                            pygame.display.update(fond,(0,0))
     
     
     
    if __name__ == '__main__':
        game()

  11. #11
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 064
    Points : 1 402
    Points
    1 402
    Par défaut
    ligne 105 tu modifies dk_bas qui devient un rectangle et plus une image.

  12. #12
    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
    Citation Envoyé par josmiley Voir le message
    ligne 105 tu modifies dk_bas qui devient un rectangle et plus une image.
    donc je doit mettre : dk_bas_pos = dk_bas_pos.move(x,y) ?

  13. #13
    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 Déplacement réglé
    Merci ! c'est bon pour le déplacement !

    Leçon de tout sa : N'utiliser que le rect pour les déplacement !

  14. #14
    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 Euh petit problème
    Bon je crois que j'ai un pb de déplacement .... lorsque je déplace vers le bas il réinitialise les coordonnées:

    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
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    #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")
        image_fond = home_screen
     
        screen.blit(fond,(0,0))
        screen.blit(start,(0,0))
        screen.blit(end,(550,550))
        screen.blit(home_screen,(0,0))
     
        x = 0
        y = 0
     
        dk_bas_pos = dk_bas.get_rect() #Transformation en .rect du personnage
        screen.blit(dk_bas,dk_bas_pos)
        screen.blit(dk_bas,(x,y))
        dk_haut_pos = dk_haut.get_rect()
        screen.blit(dk_haut,dk_haut_pos)
        screen.blit(dk_haut,(x,y))
        dk_gauche_pos = dk_gauche.get_rect()
        screen.blit(dk_gauche,dk_gauche_pos)
        screen.blit(dk_gauche,(x,y))
        dk_droite_pos = dk_droite.get_rect()
        screen.blit(dk_droite,dk_droite_pos)
        screen.blit(dk_droite,(x,y))
     
     
     
        while True: #Menu
            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
                    if event.type == KEYDOWN and event.key == K_F1:
                        image_fond= image_vide
                        screen.blit(fond,(0,0))
                        screen.blit(start,(0,0))
                        screen.blit(end,(435,435))
                        screen.blit(dk_bas,dk_bas_pos)
                        screen.blit(dk_bas,(x,y))
                        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(dk_bas,(x,y)))
     
     
     
                #Déplacement à droite
                    if event.type == KEYDOWN and event.key == K_RIGHT:
                            x=+10
     
                            screen.blit(dk_droite,dk_droite_pos)
                            screen.blit(dk_droite,(x,y))
                            dk_droite_pos = dk_droite_pos.move(x,y)
                            pygame.display.update(screen.blit(dk_droite,dk_droite_pos))
                            pygame.display.update(screen.blit(dk_droite,(x,y)))
                            pygame.display.update(fond,(0,0))
     
     
     
                    #Déplacement à gauche
                    if event.type == KEYDOWN and event.key == K_LEFT:
                            x=-10
     
                            screen.blit(dk_gauche,dk_gauche_pos)
                            screen.blit(dk_gauche,(x,y))
                            dk_gauche_pos = dk_gauche_pos.move(x,y)
                            pygame.display.update(screen.blit(dk_gauche,(x,y)))
                            pygame.display.update(screen.blit(dk_gauche,dk_gauche_pos))
                            pygame.display.update(fond,(0,0))
     
     
     
                    #Déplacement en bas
                    if event.type == KEYDOWN and event.key == K_DOWN:
     
                            y=+10
                            screen.blit(dk_bas,dk_bas_pos)
                            screen.blit(dk_bas,(x,y))
                            dk_bas_pos = dk_bas_pos.move(x,y)
                            pygame.display.update(screen.blit(dk_bas,dk_bas_pos))
                            pygame.display.update(screen.blit(dk_bas,(x,y)))
                            pygame.display.update(fond,(0,0))
     
     
                    #Déplacement en haut
                    if event.type == KEYDOWN and event.key == K_UP:
     
                            y=-10
                            screen.blit(dk_haut,dk_haut_pos)
                            screen.blit(dk_haut,(x,y))
                            dk_bas_pos = dk_haut_pos.move(x,y)
                            pygame.display.update(screen.blit(dk_haut,dk_haut_pos))
                            pygame.display.update(screen.blit(dk_haut,(x,y)))
                            pygame.display.update(fond,(0,0))
                            y=y
     
     
     
    if __name__ == '__main__':
        game()
    et me donne ce message :

    Traceback (most recent call last):
    File "H:\Projet ISN\Dk_Game_new.py", line 129, in <module>
    game()
    File "H:\Projet ISN\Dk_Game_new.py", line 111, in game
    pygame.display.update(fond,(0,0))
    ValueError: update requires a rectstyle or sequence of recstyles

  15. #15
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 064
    Points : 1 402
    Points
    1 402
    Par défaut
    les lignes 109 et 110 donnent la réponse ...

  16. #16
    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 MErci !
    Merci j'ai résolu le problème !

+ 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 Programmation multimédia/Jeux
    Réponses: 7
    Dernier message: 08/05/2013, 03h04
  2. déplacement personnage sur page Web
    Par dragonno dans le forum Débuter
    Réponses: 3
    Dernier message: 04/03/2013, 20h24
  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, 12h44
  4. Réponses: 2
    Dernier message: 26/07/2006, 01h33
  5. Réponses: 5
    Dernier message: 27/08/2003, 12h45

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