求小球碰到墙壁后来回沿四边运行的算法?????

huangsizhong214 2007-01-16 03:42:26
用一个红色矩形来模拟四个墙壁,中间有个小球(圆),小球碰到墙壁后沿一个倾角反弹,然后按顺序碰到每一个边来回运行 (这在vb里很容易实现:用timer定时器)

我自己编了一个:
#include<graphics.h>
#include<stdlib.h>
#include<math.h>
void main()
{
int driver=DETECT,mode=0;
int r=20,height=400,width=500,x0=70,y0=40,x,y,x1,y1,x2,y2;
int m,n;unsigned size,size1;void *buf,*buf1;
registerbgidriver(EGAVGA_driver); /*建立独立图形运行程序 */
initgraph(&driver,&mode,"");
setbkcolor(BLUE);setcolor(RED);
setlinestyle(0,0,3);
rectangle(x0,y0,x0+width,y0+height);
setlinestyle(0,0,1);
x=x0+width/2+2; y=y0+r+2;
circle(x,y,r);setfillstyle(1,2);floodfill(x,y,4);
x=x0+width/2-r+2; y=y0+2;
size=imagesize(x,y,x+2*r,y+2*r);
buf=malloc(size); getimage(x,y,x+2*r,y+2*r,buf);
m=0;n=0;
while(!kbhit())
{

for(;x+m<x0+width-2*r-2;m++,n++)
{
putimage(x+m,y+n,buf,COPY_PUT);
}delay(20);
for(;y+n<y0+height-2*r-2;n++,m--)
{
putimage(x+m,y+n,buf,COPY_PUT);
}delay(20);
for(;x+m>x0+2;n--,m--)
{
putimage(x+m,y+n,buf,COPY_PUT);
}delay(20);
for(;y+n>y0+2;n--,m++)
{
putimage(x+m,y+n,buf,COPY_PUT);
}

delay(20);
setcolor(2);
settextstyle(3,0,0);
outtextxy(90,350,"PRESS KEY TO EXIT");
setcolor(RED);
}
getch();
closegraph();
}

以上算法不对,请高手给出正确算法????
...全文
168 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
FigoZhu 2007-12-05
  • 打赏
  • 举报
回复
帮顶,接分

70,026

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧