Partage
  • Partager sur Facebook
  • Partager sur Twitter

pygame, destruction de sprite

comment faire pour detruire le sprite de sword ?

    21 décembre 2024 à 13:55:54

    bonjours cher amis,

    je suis actuellement en train de faire un projet de jeux de combats, seulement je ne parvient pas a détruire le sprite de l'épé au moment ou l'on lâche la barre d'espace. je voudrai également que le sprite de sword suive le déplacement du player tout le temps que espace et enfoncé. 

    le code de main:

    import pygame
    
    from game import Game
    from sword import Sword
    
    pygame.init()
    
    pygame.display.set_caption('juex de comabat')
    screen = pygame.display.set_mode((1080, 500))
    
    backround = pygame.image.load("assets/BG.png")
    
    game = Game()
    
    sword = Sword(game.player)
    
    run = True
    
    while run:
        screen.blit(backround, (0,0))
    
        screen.blit(game.player.image, game.player.rect)
    
        game.player.sword.draw(screen)
    
        pygame.display.flip()
    
        if game.pressed.get(pygame.K_RIGHT) or game.pressed.get(pygame.K_d):
            game.player.move_right()
    
        if game.pressed.get(pygame.K_LEFT) or game.pressed.get(pygame.K_q):
            game.player.move_left()
    
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
                pygame.quit()
    
            elif event.type == pygame.KEYDOWN:
                game.pressed[event.key] = True
    
                if event.key == pygame.K_SPACE:
                    game.player.attak()
    
            elif event.type == pygame.KEYUP:
                game.pressed[event.key] = False
    
                if event.key == pygame.K_SPACE:
                    game.player.remove_sword()
    le code player:
    import pygame
    
    from sword import Sword
    
    class Player(pygame.sprite.Sprite):
    
        def __init__(self):
            super().__init__()
            self.health = 100
            self.max_health = 100
            self.velocity = 1
            self.attack = 10
            self.image = pygame.image.load("assets/herro.png")
            self.rect = self.image.get_rect()
            self.rect.x = 540
            self.rect.y = 350
            self.gravity = 0.3
            self.sword = pygame.sprite.Group()
    
        def attak(self):
            self.sword.add(Sword(self))
    
        def remove_sword(self):
            self.sword.remove(self)
    
        def move_left(self):
            self.rect.x -= self.velocity
    
        def move_right(self):
            self.rect.x += self.velocity
    
    le code de sword:
    
    import pygame
    
    class Sword(pygame.sprite.Sprite):
    
        def __init__(self, player):
            super().__init__()
            self.image = pygame.image.load("assets/sword.png")
            self.rect = self.image.get_rect()
            self.rect.x = player.rect.x
            self.rect.y = player.rect.y
            self.player = player
            self.bol = False
    
        def delete(self):
            self.player.sword.remove(self)

    -
    Edité par justinleroy4 21 décembre 2024 à 16:33:33

    • Partager sur Facebook
    • Partager sur Twitter
      21 décembre 2024 à 14:34:45

      Player.sword est un sprite.Group auquel on pourra ajouter/soustraire des Sword/Sprite.

      Pour soustraire un Sword/Sprite, il faut effectivement utiliser la méthode remove mais en lui passant un des sword.sprite qui ont été ajouté (sinon ca ne fait rien).

      • Partager sur Facebook
      • Partager sur Twitter
        21 décembre 2024 à 14:39:49

        Bonjour, Merci de lire les règles du forum AVANT de créer un sujet.

        Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
        Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

        Pour plus d'informations, nous vous invitons à lire les règles générales du forum

        Merci de colorer votre code à l'aide du bouton Code </>

        Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton  </> de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: php;">Votre code ici</pre>.

        Merci de modifier votre message d'origine en fonction.

        Liens conseillés

        • Partager sur Facebook
        • Partager sur Twitter
          21 décembre 2024 à 16:35:42

          d'accord, je vient de tilté, je pensais que passer self puisque j'était dans l'objet suffisait.

          un grand merci a toi mps

          une idée pour que l'épé suive le player quand je le déplace ?

          • Partager sur Facebook
          • Partager sur Twitter
            21 décembre 2024 à 17:27:39

            C'est à ça que servent les sprites Group.

            Vous pouvez définir la méthode update pour player et sword, mettre les différents sprites dans un même Group et on appelle la méthode update du group...

            • Partager sur Facebook
            • Partager sur Twitter

            pygame, destruction de sprite

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown