Faire attendre une partie d'un programme seprement
balkis3005
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour
Je suis en trai nde realiser un Mrario Bros, et je rencontre un probleme : mon animation est trop rapide. Evidemment, j'ai fait mes recherches, et le meilleur moyen est d'utiliser time.sleep(seconds)
Mais le souci, c'est que si je ralenti mon animation, le reste du programme se ralenti aussi, car ils sont reliés.
l' ideal serait de faire ralentir le bout de code qui anime mon perso sans impacter le reste, mais si vous avez d'autres propositions je prends tout =)
class AnimateSprite(pygame.sprite.Sprite) :
def __init__(self) :
super().__init__()
self.image = pygame.image.load(f'MarioAnimate/Gauche/Stati/1.png')
self.current_image = 0
def animate(self, type):
self.images = animations.get(type)
self.current_image += 1
if self.current_image >= len(self.images) :
self.current_image = 0
self.image = self.images[self.current_image]
def load_animation(direction, type) :
images = []
path = f"MarioAnimate/{direction}/{type}/"
num_files = len([f for f in os.listdir(path)
if os.path.isfile(os.path.join(path, f))])
num_files2 = num_files
for num in range(1, num_files2) :
num = str(num)
image_path = path + num + '.png'
images.append(pygame.image.load(image_path))
return images
animations = {
'MariorunD' : load_animation('Droite', 'Run'), 'MariorunG' : load_animation('Gauche', 'Run'), 'MariojumpG' : load_animation('Gauche', 'Jump'), 'MariojumpD' : load_animation('Droite', 'Jump')
}
le tout relié à des self.animate('MariorunG') ou autre type, le tout actionné lors d'une entrée clavier.
exemple d'une entrée :
def move_left(self) :
left = True
last_direction = 'left'
self.position[0] -= self.speed
self.animate('MariorunG')
relié à ca :
def handle_input(self):
pressed = pygame.key.get_pressed()
if pressed[pygame.K_UP] :
self.player.move_up()
if pressed[pygame.K_DOWN] :
print('')
if pressed[pygame.K_LEFT] :
self.player.move_left()
if pressed[pygame.K_RIGHT] :
self.player.move_right()
ca etant relié a ca :
def run(self):
clock = pygame.time.Clock()
# boucle jeu
running = True
while running :
self.player.save_location()
self.handle_input()
self.update()
self.group.center(self.player.rect.center)
self.group.draw(self.screen)
pygame.display.flip()
for event in pygame.event.get() :
if event.type == pygame.QUIT :
running = False
clock.tick(130)
pygame.quit()
actionné avec ca :
import pygame
from game import Game
if __name__ == '__main__':
pygame.init()
game = Game()
game.run()
voila voila bon doliprane =)
Je suis en trai nde realiser un Mrario Bros, et je rencontre un probleme : mon animation est trop rapide. Evidemment, j'ai fait mes recherches, et le meilleur moyen est d'utiliser time.sleep(seconds)
Mais le souci, c'est que si je ralenti mon animation, le reste du programme se ralenti aussi, car ils sont reliés.
l' ideal serait de faire ralentir le bout de code qui anime mon perso sans impacter le reste, mais si vous avez d'autres propositions je prends tout =)
class AnimateSprite(pygame.sprite.Sprite) :
def __init__(self) :
super().__init__()
self.image = pygame.image.load(f'MarioAnimate/Gauche/Stati/1.png')
self.current_image = 0
def animate(self, type):
self.images = animations.get(type)
self.current_image += 1
if self.current_image >= len(self.images) :
self.current_image = 0
self.image = self.images[self.current_image]
def load_animation(direction, type) :
images = []
path = f"MarioAnimate/{direction}/{type}/"
num_files = len([f for f in os.listdir(path)
if os.path.isfile(os.path.join(path, f))])
num_files2 = num_files
for num in range(1, num_files2) :
num = str(num)
image_path = path + num + '.png'
images.append(pygame.image.load(image_path))
return images
animations = {
'MariorunD' : load_animation('Droite', 'Run'), 'MariorunG' : load_animation('Gauche', 'Run'), 'MariojumpG' : load_animation('Gauche', 'Jump'), 'MariojumpD' : load_animation('Droite', 'Jump')
}
le tout relié à des self.animate('MariorunG') ou autre type, le tout actionné lors d'une entrée clavier.
exemple d'une entrée :
def move_left(self) :
left = True
last_direction = 'left'
self.position[0] -= self.speed
self.animate('MariorunG')
relié à ca :
def handle_input(self):
pressed = pygame.key.get_pressed()
if pressed[pygame.K_UP] :
self.player.move_up()
if pressed[pygame.K_DOWN] :
print('')
if pressed[pygame.K_LEFT] :
self.player.move_left()
if pressed[pygame.K_RIGHT] :
self.player.move_right()
ca etant relié a ca :
def run(self):
clock = pygame.time.Clock()
# boucle jeu
running = True
while running :
self.player.save_location()
self.handle_input()
self.update()
self.group.center(self.player.rect.center)
self.group.draw(self.screen)
pygame.display.flip()
for event in pygame.event.get() :
if event.type == pygame.QUIT :
running = False
clock.tick(130)
pygame.quit()
actionné avec ca :
import pygame
from game import Game
if __name__ == '__main__':
pygame.init()
game = Game()
game.run()
voila voila bon doliprane =)
A voir également:
- Faire attendre une partie d'un programme seprement
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Forcer la fermeture d'un programme - Guide
3 réponses
Bonjour
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.
Depuis que tu t'es inscrit à chacune de tes questions un modérateur repasse derrière toi.
Fais un effort.
PS peux tu expliquer ce que veut dire "seprement"?
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.
Depuis que tu t'es inscrit à chacune de tes questions un modérateur repasse derrière toi.
Fais un effort.
PS peux tu expliquer ce que veut dire "seprement"?