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 :
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()
Cependant, l'image ne change pas.
Comme vous avez pu le remarquer, j'ai introduit une ligne avec print pour débogguer :

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]
Voici ce que j'ai :

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
...
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.

Merci de bien vouloir m'aider, si ça se trouve c'est tout bête en plus !