Bonsoir,
Je suis en train de réaliser une classe qui a pour but de gèrer des images animées. Cependant je me heurte à un problème incompréhensible ou alors je suis vraiment pas frais...
Voici le code de la classe :
Cependant, l'image ne change pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 import pygame from pygame.locals import * from os.path import join class AnimatedImage: def __init__(self): self.images = {} self.data = [] self.frame = 0 self.last_time = 0 def load(self, path): lines = [] with open(join(path, "animation.txt"), "r") as f: content = f.read() lines = content.split("\n") for line in lines: values = line.split(" ") imgpath = values[0] time = values[1] if not imgpath in self.images: self.images[imgpath] = pygame.image.load(join(path, imgpath)) self.data.append([imgpath, time]) def surface(self): current_time = pygame.time.get_ticks() print current_time - self.last_time, self.data[self.frame][1], current_time - self.last_time > self.data[self.frame][1] if current_time - self.last_time > self.data[self.frame][1]: self.last_time = current_time if self.frames > len(self.data)-1 : self.frames = 0 else: self.frames += 1 return self.images[self.data[self.frame][0]] if __name__ == "__main__": run = 1 img = AnimatedImage() img.load("test") pygame.init() screen = pygame.display.set_mode((600,400)) while(run): for event in pygame.event.get(): if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE): run = 0 screen.fill((0,0,0)) screen.blit(img.surface(), (0,0)) pygame.display.flip()
Comme vous avez pu le remarquer, j'ai introduit une ligne avec print pour débogguer :
Voici ce que j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part print current_time - self.last_time, self.data[self.frame][1], current_time - self.last_time > self.data[self.frame][1]
Je ne comprends pas pourquoi la condition logique (3eme entrée) est évaluée comme fausse alors que l'on voit bien que le premier élement est supérieur au second.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ... 2500 50 False 2501 50 False 2502 50 False 2503 50 False ...
Merci de bien vouloir m'aider, si ça se trouve c'est tout bête en plus !
Partager