[C++] 纯文本查看 复制代码 #include<bits/stdc++.h>
#include <graphics.h> //包含EGE的头文件
#include<time.h>
using namespace std;
int width=800;
int height=600;
int num;
int count1;
#define mas 150//define是宏定义
struct ballon
{
float x;//ball[i].x坐标
float y;//ball[i].y坐标
float vx;//ball[i].x向速度
float vy;//ball[i].y向速度
int radius;//半径
//int health;//健康=1,不健康=0
int color;
float g;
}ball[1000];
void start()
{
cout<<"请输入球的数量:";
cin>>num;
srand(time(0));//随机种子函数
for(int i=0;i<num;i++)
{
ball[i].x=rand()%700+50;
ball[i].y=rand()%500+50;
ball[i].vx=(((float)rand())/32767)-0.5;
ball[i].vy=(((float)rand())/32767)-0.5;
ball[i].radius=rand()%2+0.5;
ball[i].g=0;
ball[i].color=rand()%360+1;
}
//ball[0].health=0;
count1=1;
initgraph(width, height); //初始化图形界面
setcolor(GREEN); //设置画图线为红色
setbkcolor(BLACK);//设置背景颜色为白色
setfillcolor(GREEN);//设置填充颜色为红色
setfont(25,0,"幼圆");//(字体高度,字体宽度(为0即为自适应),字形)设置字体为25,幼圆字体
setbkmode(TRANSPARENT); //设置文字背景色为透明(默认为有背景色)
}
void update()//数据更新
{
for(int i=0;i<num;i++)
{
ball[i].vy=ball[i].vy+ball[i].g;
ball[i].vx=ball[i].vx+ball[i].g;
ball[i].y=ball[i].y+ball[i].vy;
ball[i].x=ball[i].x+ball[i].vx;
if(ball[i].y>=height-ball[i].radius)
{
ball[i].vy=-ball[i].vy;
}
else if(ball[i].y<=ball[i].radius)
{
ball[i].vy=-ball[i].vy;
}
if(ball[i].x>=width-ball[i].radius)
{
ball[i].x=width-ball[i].radius;
ball[i].vx=-ball[i].vx;
}
else if(ball[i].x<=ball[i].radius)
{
ball[i].vx=-ball[i].vx;
}
}
}
int distance1(int i,int j)
{
int dis;
dis=abs(ball[i].x-ball[j].x)+abs(ball[i].y-ball[j].y);
if(dis<mas)
{
return dis;
}
else
{
return 0;
}
}
void drawball()//画球
{
int distance;
//xyprintf(20,20,"病人数量:%d",count1);//格式化输出文字
for(int i=0;i<num;i++)
{
setfillcolor(hsv2rgb(ball[i].color, 1, 1));
fillellipse(ball[i].x, ball[i].y, ball[i].radius, ball[i].radius); //画一个实心圆
for(int j=i+1;j<num;j++)
{
distance=distance1(i,j);
if(distance>0)
{
float color_line = ((float)distance/(float)mas);
setcolor(hsv2rgb(ball[i].color, 1, color_line));
line(ball[i].x,ball[i].y,ball[j].x,ball[j].y);
}
}
}
Sleep(10);
cleardevice();
}
int main()
{
start();
while(1)
{
update();
drawball();
}
getch();
return 0;
}
|