update patch for openssl to 1.1.0h
[AROS-Contrib.git] / Demo / kdp / grav2.c
blobf96ec542c4724a45da9a7f1b75428ba29d9706c3
2 #include "kdp.h"
3 #include "kdpgfx.h"
4 #include <math.h>
5 #include <stdlib.h>
7 #define NUM 10000
8 float partx[NUM];
9 float party[NUM];
10 float partvx[NUM];
11 float partvy[NUM];
12 float grv[NUM];
13 UBYTE pal[256*3];
14 int main(int argc, char **argv)
16 KDPscreen screen;
17 KDPmouse mouse;
18 UBYTE *vmem;
19 float ox,oy;
20 int i;
21 int tel=0,dir;
22 float xdif,ydif,len;
23 float ograv;
24 if (!(KDPopen(&screen)))
26 printf("kdp failed!\n");
27 KDPclose(&screen);
28 return 1;
31 vmem=screen.vmem;
32 KDPpalRange(0,0,0,
33 255,0,0,
34 0,100,pal);
35 KDPpalRange(255,0,0,
36 255,255,0,
37 100,200,pal);
38 KDPpalRange(255,255,0,
39 255,255,255,
40 200,255,pal);
41 KDPsetPal(pal);
43 KDPgetMouse(&mouse);
44 ox=0;oy=0;
45 i=0;
46 dir=0;
47 ograv=20;
48 for(i=0;i<NUM;i++)
50 partx[i]=rand()%320;
51 party[i]=rand()%200;
52 partvx[i]=0;partvy[i]=0;
53 grv[i]=(rand()%1000)/150;
57 while(mouse.button!=3)
59 ox+=mouse.xspeed;
60 oy+=mouse.yspeed;
61 if (mouse.button==0)
62 ograv=20;
63 if (mouse.button==1)
64 for(i=0;i<NUM;i++)
66 partx[i]=rand()%320;
67 party[i]=rand()%200;
68 partvx[i]=0;partvy[i]=0;
69 grv[i]=(rand()%1000)/150;
71 if (mouse.button==2)
72 ograv=14;
73 if (tel==1) dir=1-dir;
76 for(i=0;i<NUM;i++)
78 xdif=ox-partx[i];
79 ydif=oy-party[i];
80 len=sqrt(xdif*xdif+ydif*ydif);
81 len*=ograv;
82 if (len!=0)
84 if (dir==1)
86 partvx[i]-=xdif/len;
87 partvy[i]-=ydif/len;
89 if (dir==0)
91 partvx[i]+=xdif/len;
92 partvy[i]+=ydif/len;
96 for(i=0;i<NUM;i++)
98 partx[i]+=partvx[i];
99 party[i]+=partvy[i];
100 partvy[i]+=0.05;
101 if (party[i]>199)
103 party[i]=199;
104 partvy[i]=-(partvy[i]/2);
107 KDPaddpset(partx[i],party[i],50,vmem);
109 KDPcircle(ox,oy,4,4,255,vmem);
110 KDPblur(3,vmem);
111 KDPwaitVr();
112 KDPshow(vmem);
113 KDPgetMouse(&mouse);
116 KDPclose(&screen);
118 return 0;