[C] 纯文本查看 复制代码 #include <graphics.h> //包含EGE的头文件
#include<time.h> //包含随机数,时间函
#include<bits/stdc++.h>
using namespace std;
float x[100],y[100],vx[100],vy[100],vg[100],r[100];
int cnt=0,n;
void start()//初始化
{
cin>>n;
srand(time(0));//随机种子函数
// float y=100,x=50,vy=10,vx=5,y1=350,x1=100,vy1=15,vx1=2;
for(int i=0;i<n;i++)
{
x[i]=(rand()%700)+50;
y[i]=(rand()%500)+50;
vx[i]=rand()%5;
vy[i]=rand()%4;
vg[i]=0;
r[i]=3;
}
// float vg=0,vg1=0;
initgraph(800, 600); //初始化图形界面
setcolor(RED); //设置画图线为红色
setbkcolor(WHITE);//设置背景颜色为白色
setfillcolor(RED);//设置填充颜色为红色
setfont(25,0,"幼圆");//(字体高度,字体宽度(为0即为自适应),字形)设置字体为25,幼圆字体
setbkmode(TRANSPARENT); //设置文字背景色为透明(默认为有背景色)
}
void update()//数据更新
{
for(int i=0;i<n;i++)
{
y[i]+=vy[i];
x[i]+=vx[i];
if(y[i]>=(600-r[i]))
{
y[i]=(600-r[i]);
vy[i]=-vy[i];
cnt++;
}
if(y[i]<=r[i])
{
y[i]=r[i];
vy[i]=-vy[i];
cnt++;
}
if(x[i]>=(800-r[i]))
{
x[i]=800-r[i];
vx[i]=-vx[i];
}
if(x[i]<=r[i])
{
x[i]=r[i];
vx[i]=-vx[i];
}
}
}
void draw()//绘制
{
xyprintf(20,20,"弹跳次数:%d",cnt);//格式化输出文字
for(int i=0;i<n;i++)
{
setfillcolor(hsv2rgb(10*i%360, 1, 1));//设置填充颜色 参数(颜色,饱和度,明亮度)
fillellipse(x[i],y[i], r[i], r[i]);
}
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
setcolor(hsv2rgb(10*i%360, 1, 1));//设置填充颜色 参数(颜色,饱和度,明亮度)
line(x[i],y[i],x[j],y[j]);
}
}
}
int main()
{
start();
while(1)
{
update();
draw();
Sleep(10);
cleardevice();
}
getch(); //暂停,等待键盘按键
return 0;
}
|