Bug sur pygame
NASSIM_BERKHLI
Messages postés
4
Statut
Membre
-
Phil_1857 Messages postés 1956 Statut Membre -
Phil_1857 Messages postés 1956 Statut Membre -
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
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.
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
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) :
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()
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 ...
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 ...