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):
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
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]
Alors, qu'en dites-vous?
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()
Partager