Faire attendre une partie d'un programme seprement

Fermé
balkis3005 Messages postés 9 Date d'inscription dimanche 13 mars 2022 Statut Membre Dernière intervention 1 avril 2022 - 31 mars 2022 à 19:58
Whismeril Messages postés 19030 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 avril 2024 - 1 avril 2022 à 18:29
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 =)
A voir également:

3 réponses

Whismeril Messages postés 19030 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 avril 2024 931
31 mars 2022 à 20:56
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"?
0
balkis3005 Messages postés 9 Date d'inscription dimanche 13 mars 2022 Statut Membre Dernière intervention 1 avril 2022
1 avril 2022 à 18:06
Mais je les ai mises, ces foutues balises la. En fait, a chaque post je les ai mises, et j'ai beau regarder en boucle ce tuto bah jpige toujours pas cqui cloche
Seprement en fait ct separement juste que je sais pa ecrire ;-;
0
Whismeril Messages postés 19030 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 avril 2024 931
1 avril 2022 à 18:29
Ce qui cloche c'est que tu mets les balises et tu écris le code après.
Et dans le tuto c'est bien indiquer de mettre le code dedans.
0