c语言的问题 很急 高手们快来帮忙 高分

来源:百度知道 编辑:UC知道 时间:2024/05/31 19:56:58
#include <DOS.H>
#include<graphics.h>
#include<stdlib.h>
#include<math.h>
#define maxcircle 80
#define CR 1
main()
{union REGS r;
int dr=DETECT,mode=0;
int mx,my,mc;
int i, color[maxcircle];
double fx,fy,force=0;
double s,x[maxcircle],y[maxcircle];

initgraph(&dr,&mode,"");

r.x.ax=0;
int86(0X33,&r,&r);
r.x.ax=2;
int86(0x33,&r,&r);
for(i=0;i<maxcircle;i++)
{color[i]=random(16)+1;
x[i]=random(640);
y[i]=random(480);
}

while(!kbhit())
{
r.x.ax=3;
int86(0x33,&r,&r);
mx=r.x.cx;
my=r.x.dx;
mc=r.x.bx;
for(i=0;i<maxcircle;i++)
{
fx=mx-x[i];
fy=my-y[i];
s=sqrt(fx*fx+fy*fy+0.0012);
if(s!=0)
{
setcolor(0);
setfillstyle(1,0);

fillellipse(x[i],y[i],CR,CR);
setcolor(color[i]);
setfillstyle(1,c

数据的定义就不说了
initgraph(&dr,&mode,""); 初始化图形界面

r.x.ax=0;
int86(0X33,&r,&r); 开启0x33中断0号服务 初始化鼠标
r.x.ax=2;
int86(0x33,&r,&r);开启0x33中断2号服务 隐藏鼠标
for(i=0;i<maxcircle;i++)
{color[i]=random(16)+1;
x[i]=random(640);
y[i]=random(480);
} color[80]80个数据都储存上随机的颜色(16种颜色中随机)
x[80]全都存上随机的数 范围在0--640
y[80]全都存上随机的数 范围在0--480
等于说 x[80] y[80]储存了屏幕上 80个随机的点
while(!kbhit()) 若按下键盘 循环才跳出
{
r.x.ax=3;
int86(0x33,&r,&r); 开启0x33中断3号服务获取鼠标状态
mx=r.x.cx; mx为鼠标横坐标
my=r.x.dx; my为鼠标纵坐标
mc=r.x.bx; mc为鼠标按键状态
for(i=0;i<maxcircle;i++) {
fx=mx-x[i];
fy=my-y[i];
s=sqrt(fx*fx+fy*fy+0.0012); 不明白这个式子什么意思
if(s!=0) 真不明白 上面的式子 S根本不可能为0
{
setcolor(0);
setfillstyle(1,0);

fillellipse(x[i],y[i],CR,CR);
setcolor(color[i]);
setfillstyle(1,color[i]);

force=random(30)/(double)10;

x[i]+=fx/s*force;
y[i]+=fy/s