bonjour,

J'ai le programme suivant avec un disque rouge qui est supposé rebondir sur les bords de la fenetre. Le problème, c'est que ce disque reste collé au premier bord qu'il rencontre au lieu de rebondir. Je mets ci-après les valeurs de y,vx et vy (composantes des vitesses du disque):
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
64
65
66
67
68
69
70
71
 
100.0 [10, 8]
108.0 [10, 8]
116.0 [10, 8]
124.0 [10, 8]
132.0 [10, 8]
140.0 [10, 8]
148.0 [10, 8]
156.0 [10, 8]
164.0 [10, 8]
172.0 [10, 8]
180.0 [10, 8]
188.0 [10, 8]
196.0 [10, 8]
204.0 [10, 8]
212.0 [10, 8]
220.0 [10, 8]
228.0 [10, 8]
236.0 [10, 8]
244.0 [10, 8]
252.0 [10, 8]
260.0 [10, 8]
268.0 [10, 8]
276.0 [10, 8]
284.0 [10, 8]
292.0 [10, 8]
300.0 [10, 8]
308.0 [10, 8]
316.0 [10, 8]
324.0 [10, 8]
332.0 [10, 8]
340.0 [10, 8]
348.0 [10, 8]
356.0 [10, 8]
364.0 [10, 8]
372.0 [10, 8]
380.0 [10, 8]
388.0 [10, 8]
396.0 [10, 8]
404.0 [10, 8]
412.0 [10, 8]
420.0 [10, 8]
428.0 [10, 8]
436.0 [10, 8]
444.0 [10, 8]
452.0 [10, 8]
460.0 [10, 8]
468.0 [10, 8]
476.0 [10, 8]
484.0 [10, 8]
492.0 [10, 8]
500.0 [10, 8]
508.0 [10, 8]
516.0 [10, 8]
524.0 [10, 8]
532.0 [10, 8]
540.0 [10, 8]
548.0 [10, 8]
556.0 [10, 8]
564.0 [10, 8]
572.0 [10, 8]
580.0 [10, 8]
588.0 [10, 8]
596.0 [-9.9000000000000004, 8]
604.0 [9.8010000000000002, 8]
612.0 [-9.7029899999999998, 8]
620.0 [9.605960099999999, 8]
628.0 [-9.5099004989999987, 8]
636.0 [9.414801494009998, 8]
644.0 [-9.3206534790698985, 8]
652.0 [9.2274469442791993, 8]
Voici le code:
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
 
import sys, pygame
import matplotlib as m
import pylab as p
import math
pygame.init()
 
size = width, height = 700, 700
speed1 = [10,8]
black = 0, 0, 0
x=[];y=[];vx=[];vy=[];ec=[]
rouge=(255,0,0)
 
screen = pygame.display.set_mode(size)
 
z=pygame.Surface((100,100))
z.set_colorkey(black, 0)
a=pygame.draw.circle(z,rouge,(50,50),50,0)
zrect=z.get_rect()
 
tt=[];vx=[];vy=[]
t=0
 
while 1:
   zgauche=float(zrect.left); zdroite=float(zrect.right); zhaut=float(zrect.top); zbas=float(zrect.bottom)
   zcx=float(zrect.center[0]);  zcy=float(zrect.center[1]) 
 
   if t==70:
	break
   t=t+1
   tt.append(t)
   print zbas,speed1
   for event in pygame.event.get():
        if event.type == pygame.QUIT: sys.exit()
 
   c=0.01
 
   if zgauche < 0 or zdroite > width:
       speed1[0] = -(speed1[0]-c*speed1[0])
 
   if zhaut < 0 or zbas > height:
       speed1[1] = -(speed1[1]-c*speed1[1])
 
   zrect = zrect.move(speed1)
 
 
   screen.fill(black)
   screen.blit(z,zrect)
 
   pygame.display.flip()
Alors, qu'en dites-vous?