模拟自由落体下落又弹起程序
我觉得编程并不是一件枯燥的事情,我们可以利用其它科所学的知识编一些有趣的小程序,像下面这个程序就用到了高中物理中自由落体的有关知识,我们只有把所学知识学以致用时,我们才是真正的掌握了知识.下面的这个程序虽然比较粗陋,但它结合了物理的有关知识,我想也应该能给你一些启发.我用了两中方法实现动画,因为我觉得我们做一件事时,思路不能太单一,而因该多方面考虑问题.方法1
#include<graphics.h>
#include<dos.h>
#define g 10
main()
{int x=320,y,t;
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"");
cleardevice();
setcolor(4);
do{
for(t=0;t<10;t++)
{y=0.5*g*t*t;
circle(x,y,20);
delay(40000);
cleardevice();
}
for(t=0;t<10;t++)
{y=405-(90*t-0.5*g*t*t);
circle(x,y,20);
delay(40000);
cleardevice();
}
}while(!kbhit());
closegraph();
}
方法2
#include<graphics.h>
#include<dos.h>
#define g 10
main()
{int x=320,y,t;
int size;
int gdriver=DETECT,gmode;
void *buffer;
initgraph(&gdriver,&gmode,"");
cleardevice();
circle(320,10,10);
size=imagesize(310,0,330,20);
buffer=malloc(size);
getimage(310,0,330,20,buffer);
cleardevice();
do{
for(t=0;t<10;t++)
{y=0.5*g*t*t;
putimage(x,y,buffer,COPY_PUT);
delay(40000);
cleardevice();
}
for(t=0;t<10;t++)
{y=405-(90*t-0.5*g*t*t);
putimage(x,y,buffer,COPY_PUT);
delay(40000);
cleardevice();
}
}while(!kbhit());
closegraph();
}