Bonjour, j'ai commencer une jeu avec un joueur et un projectile sauf que quand je tire, le projectile se duplique a l'infini(pareil pour le monstre), voici le code
import pygame
pygame.init()
from game import Game
from projectile import Projectile
pygame.display.set_caption("Mon premier jeu en python")
image = pygame.display.set_mode((1080, 720))
game = Game()
en_cours = True
arrire_plan = pygame.image.load('assets/bg.jpg')
while en_cours:
image.blit(arrire_plan, (0, -200))
image.blit(game.player.image, game.player.rect)
game.player.all_projectiles.draw(arrire_plan)
game.all_monster.draw(arrire_plan)
for projectile in game.player.all_projectiles:
projectile.move()
for monster in game.all_monster:
monster.forward()
pygame.display.flip()
if game.pressed.get(pygame.K_RIGHT) and game.player.rect.x + game.player.rect.width < 1080:
game.player.move_right()
elif game.pressed.get(pygame.K_LEFT) and game.player.rect.x > 0:
game.player.move_left()
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.QUIT:
en_cours = False
pygame.quit()
elif event.type == pygame.KEYDOWN:
game.pressed[event.key] = True
if event.key == pygame.K_SPACE:
game.player.launch_projectile()
elif event.type == pygame.KEYUP:
game.pressed[event.key] = False
class Monster(pygame.sprite.Sprite):
def __init__(self, game):
super().__init__()
self.game = game
self.vie = 100
self.max_vie = 100
self.attaque = 5
self.velocity = 1
self.image = pygame.image.load('assets/mummy.png')
self.rect = self.image.get_rect()
self.rect.x = 1000
self.rect.y = 740
def forward(self):
if not self.game.check_collision(self, self.game.all_players):
self.rect.x -= self.velocity
class Game:
def __init__(self):
self.player = Player(self)
self.all_players = pygame.sprite.Group()
self.all_players.add(self.player)
self.all_monster = pygame.sprite.Group()
self.pressed = {}
self.spown_monster()
def check_collision(self, sprite, group):
return pygame.sprite.spritecollide(sprite, group, False, pygame.sprite.collide_mask)
def spown_monster(self):
self.all_monster.add(Monster(self))
class Player(pygame.sprite.Sprite):
def __init__(self, game):
super().__init__()
self.game = game
self.image = pygame.image.load('assets/player.png')
self.rect = self.image.get_rect()
self.vie = 100
self.vie_max = 100
self.attaque = 10
self.vit_deplace_right = 2.5
self.vit_deplace_left = 2
self.all_projectiles = pygame.sprite.Group()
self.rect.x = 400
self.rect.y = 500
def launch_projectile(self):
self.all_projectiles.add(Projectile(self))
def move_right(self):
if not self.game.check_collision(self, self.game.all_monster):
self.rect.x += self.vit_deplace_right
def move_left(self):
if not self.game.check_collision(self, self.game.all_monster):
self.rect.x -= self.vit_deplace_left
class Projectile (pygame.sprite.Sprite):
def __init__(self, player):
super().__init__()
self.velocyti = 3.5
self.player = player
self.image = pygame.image.load('assets/projectile.png')
self.image = pygame.transform.scale(self.image, (50, 50))
self.rect = self.image.get_rect()
self.rect.x = player.rect.x + 120
self.rect.y = player.rect.y + 280
self.image_origin = self.image
self.rotate = 0
self.transform_rotate = 8
def movere(self):
if self.rect.x > 1080:
self.player.all_projectiles.remove(self)
def move(self):
self.rect.x += self.velocyti
self.rotate += self.transform_rotate
self.image = pygame.transform.rotozoom(self.image_origin, self.rotate, 1)
self.rect = self.image.get_rect(center=self.rect.center)
self.movere()
if self.player.game.check_collision(self, self.player.game.all_monster):
self.player.all_projectiles.remove(self)
quelqu'un peut m'aider et me dire quelle est le code pour recoller toute les images en une seul puis rafraichir l'image ?
PS: j'ai place ces scripts dans différent fichier python donc il n'y a pas vraiment d'ordre(dans les deux sens)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
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: python;">Votre code ici</pre>.
Merci de modifier votre message d'origine en fonction.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Merci d'avoir édité ton topic mais le code est mal formaté, l'indentation n'est pas représentée correctement.
Et tu n'as pas suivi l'ensemble des indications de mon lien.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Affichage a l'infini
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)