Bug sur pygame

Signaler
Messages postés
2
Date d'inscription
jeudi 1 avril 2021
Statut
Membre
Dernière intervention
1 avril 2021
-
Messages postés
1004
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
8 avril 2021
-
Bonjour,

vous pouvez débugger mon programme s'il vous plait.
Pour faire court, je ne peux pas appeler mon objet projectile.
Si vous voulez je peux vous envoyer les images en png par mail.

merci de votre aide


# initialisation du module pygame
import pygame
pygame.init()
#-------------------------------------------------------------------------------
# classe qui va définir le jeu
class Game :

def __init__(self):

# générer le personnage
self.player = Player()
self.pressed = {}
#-------------------------------------------------------------------------------
# classe qui va définir le personnage principale
class Player(pygame.sprite.Sprite) :

def __init__(self) :
super().__init__()

# paramètre du personnage
self.barre_vie = 100
self.barre_vie_max = 100
self.attaque = 10
self.vitesse = 3
# face graphique du personnage
self.image = pygame.image.load("personnage.png")
# taille du personnage
self.image = pygame.transform.scale(self.image, (60, 60))
# groupe de projectile
self.all_projectile = pygame.sprite.Group()
# coordonnée du personnage (sans cela le personnage ne pourra pas se déplacer)
self.deplacement = self.image.get_rect()
# positionnement du personnage
self.deplacement.x = 500
self.deplacement.y = 600

# méthode qui permet de ranger le projecile dans le groupe all_projectile (plus haut)
def lancer(self) :
self.all_projectile.add(Projectile(self))

# méthode qui permet le déplacement du personnage
def move_right(self) :
self.deplacement.x += self.vitesse
def move_left(self) :
self.deplacement.x -= self.vitesse

#-------------------------------------------------------------------------------
# classe qui va définir les projectiles
class Projectile(pygame.sprite.Sprite) :

def __init__(self, player) :
super().__init__()
self.vitesse = 6
self.image = pygame.image.load("projectile.png")
self.image = pygame.transform.scale(self.image, (266,133))
self.rect = self.image.get_rect()
self.rect.x = player.deplacement.x - 35
self.rect.y = player.deplacement.y + 10

def move(self) :
self.rect.x = self.rect.x + self.vitesse

#-------------------------------------------------------------------------------
# initialisation de la fenêtre
screen = pygame.display.set_mode((1080, 720))

# création du fond d'écran du jeu
fond_ecran = pygame.image.load("fond.png")
fond_ecran = pygame.transform.scale(fond_ecran, (1080, 720))

# charger le jeu
game = Game()
#-------------------------------------------------------------------------------
continu = True
while True:
#-------------------------------------------------------------------------------
# applique le fond d'écran sur le jeu
screen.blit(fond_ecran, (0, 0))
# applique l'image du personnage
screen.blit(game.player.image, game.player.deplacement)
# mouvement des projectiles
for Projectile in game.player.all_projectile :
Projectile.move()
if Projectile.rect.x > 300 :
game.player.all_projectile.remove(Projectile)

# applique l'ensemble des images de mon groupe de projectiles
game.player.all_projectile.draw(screen)
# vérifie si le personnage va à droite ou à gauche
if game.pressed.get(pygame.K_RIGHT) and game.player.deplacement.x <= 1026 :
game.player.move_right()
elif game.pressed.get(pygame.K_LEFT) and game.player.deplacement.x >= -2 :
game.player.move_left()
#-------------------------------------------------------------------------------
# met à jour l'écran
pygame.display.flip()
#-------------------------------------------------------------------------------
# lorsque l'utilisateur quitte la fenêtre
for event in pygame.event.get() :

if event.type == pygame.QUIT :
continu = False
pygame.quit()
#-------------------------------------------------------------------------------
# lorsque le joueur touche une touche du clavier
elif event.type == pygame.KEYDOWN :
game.pressed[event.key] = True

# lorsque le joueur touche sur w
if event.key == pygame.K_z:
game.player.lancer()




elif event.type == pygame.KEYUP :
game.pressed[event.key] = False


EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.

4 réponses

Messages postés
1004
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
8 avril 2021
111
Bonjour Nassim,

L'indentation étant importante en Python, merci de copier/coller ici ton code avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :

def test():
    print('test')

test()
Messages postés
2
Date d'inscription
jeudi 1 avril 2021
Statut
Membre
Dernière intervention
1 avril 2021

j'y arrive pas

:/
Messages postés
1004
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
8 avril 2021
111
Même en lisant la page du lien que je t'ai donné ?

C'est pourtant simple

On fait un copier/coller du code dans le message

On sélectionne le code à la souris, on déroule la liste avec la petite flèche noire dans le menu

en haut et on choisi Python

Apres validation du message, le code ressemble à mon exemple ci-dessus ...
Messages postés
1004
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
8 avril 2021
111
Coucou Baladur,

Bah, tu l'as fait à a place .....