Au secours les pros,
j'ai un projet à rendre (graphisme avec Turbo Pascal ou Dev-Pascal) et là je fais du surplace ! Y a t-il une bonne volonté qui voudrait bien m'encadrer ?
Please !
Au secours les pros,
j'ai un projet à rendre (graphisme avec Turbo Pascal ou Dev-Pascal) et là je fais du surplace ! Y a t-il une bonne volonté qui voudrait bien m'encadrer ?
Please !
oui je veux bien te recadrer, les pros ici ne font pas là pour faire tes devoirs, si tu veux des conseils sur ton code, commence par le donner...sinon je peux envisager de faire tes devoirs contre facturation, mais je suis très cher![]()
Ok le moins cher possible sera le mieux tant que je peux résoudre mon probléme.Pour faire 'marcher' un graphe (qui represente par exemple une voiture) je fais quoi?g essayé la fonction delay pour aprés redessiner mais ca ne marche pas
g le code suivant et j'aimerais faire marcher un cercle choisi au hasard jusqu'a un rectangle ou il n'y a pas de cercle![]()
Bonjour !
Voici un exemple d'animation réalisée avec l'unité Graph (testé avec FreePascal). Le résultat n'est vraiment pas beau. Peut-on faire mieux avec l'unité Graph ? Je ne sais pas.
Cet exemple peut éventuellement te servir à essayer des choses mais, pour avoir un résultat plus satisfaisant, je crois qu'il faudra te tourner vers une autre unité (comme WinGraph par exemple).
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 program Anim1; uses WinCrt, Graph; procedure Animation; var size: word; image: pointer; x1, y1, x2, y2: integer; begin x1:=0; y1:=0; x2:=100; y2:=100; size := ImageSize(x1, y1, x2, y2); GetMem(image, size); GetImage(x1, y1, x2, y2, image^); while (x1 <= GetMaxX-100) and not KeyPressed do begin PutImage(x1, y1, image^, XorPut); Inc(x1, 5); PutImage(x1, y1, image^, XorPut); end; end; var pilote, mode: integer; begin DetectGraph(pilote, mode); InitGraph(pilote, mode, ''); SetColor(Red); Circle(50, 50, 40); Animation; ReadKey; CloseGraph; end.
Avec cette procédure animation, je parviens juste à faire bouger une partie de mon premier rectangle. Et je n'ai pas bien compris comment la modifier pour faire bouger les cercles. Comme ceci :
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 program graphe; uses Graph,crt; procedure animation; var size: word; image: pointer; x1, y1, x2, y2: integer; begin x1:=0; y1:=0; x2:=100; y2:=100; size := ImageSize(x1, y1, x2, y2); GetMem(image, size); GetImage(x1, y1, x2, y2, image^); while (x1 <= GetMaxX-100) and not KeyPressed do begin PutImage(x1, y1, image^, XorPut); Inc(x1, 5); PutImage(x1, y1, image^, XorPut); end; end; var pilote:smallint; mode:smallint; q,p,j,i,n:integer; begin pilote:= detect; n:=50; p:=50; q:=200; initGraph (pilote,mode,'C:\Documents\graphisme\bgi'); for i:=1 to 10 do begin circle(n,650,15); n:=n+40; end; for j:=1 to 3 do begin rectangle(p,50,q,150); p:=p+250; q:=q+250; end; animation; readln; closeGraph; end.
Les carrés et les cercles sont dessinés sur l'écran. Ensuite la procédure Animation est appelée. Elle copie un rectangle dont les coordonnées sont données en début de procédure :
Ensuite la procédure déplace l'image copiée, en l'effaçant et en la redessinant à partir d'un nouveau point.
Code : Sélectionner tout - Visualiser dans une fenêtre à part x1:=0; y1:=0; x2:=100; y2:=100;
En l'occurrence, le nouveau point est à droite (5 pixels) du point précédent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Inc(x1, 5);
Maintenant en fonction de ce que tu veux faire, il faut déclarer autant d'images que tu veux, y copier les dessins et trouver la formule de leur déplacement.
Ok merci j'essai de modifier la procedure animation pour faire bouger les cercles.Voyons si je vais y parvenir.
enfin j'y arrive c'est bon c'est fait.
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106 uses Graph,crt; var pilote:smallint; mode:smallint; b,a,q,p,j,i,n:integer; occup:boolean; procedure efface1; begin a:=200; setcolor(black); circle(100,a,15); end; procedure efface2; begin a:=200; setcolor (black); circle(380,a,15); end; procedure efface3; begin a:=200; setcolor (black); circle(650,a,15); end; procedure guichet1; begin a:=600; while a> 100 do begin setcolor(green); circle(50,a,15); delay(1000); setcolor(black); circle(50,a,15); setcolor(green); delay(500); a:=a-50; end; circle(100,a,15); {efface2; } end; procedure guichet2; begin a:=600;b:=50; while a>200 do begin setcolor(yellow); circle(b,a,15); delay(1000); setcolor(black); circle(b,a,15); setcolor(yellow); delay(500); a:=a-50; b:=b+35; end; circle(380,a,15); efface3; end; procedure guichet3; begin a:=600; b:=50; while a>200 do begin setcolor(red); circle(b,a,15); delay(1000); setcolor(black); circle(b,a,15); setcolor(yellow); delay(500); a:=a-50; b:=b+70; end; circle(650,a,15); efface1; end; begin pilote:= detect; n:=50; p:=50; q:=200; initGraph (pilote,mode,'C:\Documents\graphisme\bgi'); for i:=1 to 10 do begin circle(n,650,15); n:=n+40; end; for j:=1 to 3 do begin rectangle(p,50,q,150); p:=p+250; q:=q+250; end; for i:=1 to 3 do begin guichet1;{guichet2;guichet3 ;} end; readln; closeGraph; end.
Partager