[C++] 纯文本查看 复制代码
#include <graphics.h> //包含EGE的头文件
#include<bits/stdc++.h>
using namespace std;
PIMAGE Pimg1;
PIMAGE Pimg2;
#define PI 3.1415926
int width =800;
int height = 800;
int R=400;
int t_cnt;
struct dot{
float x;//x坐标
float y;//y坐标
float angle;//角度
float v;//角速度 每秒转多少度
float R;
int color;
}d[10];
void startup()//初始化 函数
{
initgraph(width,height,INIT_RENDERMANUAL); //初始化图形界面
setbkcolor(BLACK);//设置背景颜色为白色
setlinewidth(1);//设置线宽
setfillcolor(BLACK);//设置填充颜色为白色
setfont(25,0,"幼圆");//(字体高度,字体宽度(为0即为自适应),字形)设置字体为25,幼圆字体
setbkmode(TRANSPARENT); //设置文字背景色为透明(默认为有背景色)
Pimg1 = newimage(width, height);
Pimg2 = newimage(width, height);
d[1].R = 300;
d[1].x = width/2;
d[1].y = height/2-d[1].R;
d[1].v = 0.01;
for(int i=2;i<9;i++)
{
d[i].R = 80;
d[i].angle += (i-2)*(2*PI/7);
d[i].x = d[i].x+d[i].R*sin(d[i].angle);
d[i].y = d[1].y-d[i].R*cos(d[i].angle);
d[i].v = 0.033;
}
t_cnt = 0;
}
void update()
{
//d[1].v += 0.0001;
d[1].angle= fmod(d[1].angle+d[1].v,2*PI);
d[1].x = width/2 + d[1].R*sin(d[1].angle);
d[1].y = height/2- d[1].R*cos(d[1].angle);
for(int i=2;i<9;i++)
{
d[i].angle= d[i].angle+d[i].v;//fmod(d[i].angle+d[i].v,2*PI);
d[i].x = d[1].x+d[i].R*sin(d[i].angle);//以上一个点为圆心
d[i].y = d[1].y-d[i].R*cos(d[i].angle);
}
t_cnt++;
}
void draw1(PIMAGE pimg)
{
cleardevice(pimg);
setcolor(CYAN,pimg); //设置画图线颜色
circle(width/2,height/2,d[1].R,pimg);
line(width/2,height/2,d[1].x,d[1].y,pimg);
//circle(d[1].x,d[1].y,d[2].R,pimg);
for(int i=2;i<9;i++)
{
line(d[1].x,d[1].y,d[i].x,d[i].y,pimg);
}
for(int i=2;i<9;i++)
{
setcolor(hsv2rgb(i*36, 1, 1),pimg);
fillellipse(d[i].x, d[i].y, 3, 3,pimg); //画一个实心圆
}
cleardevice();//?
putimage(0, 0, pimg, SRCPAINT);
}
void draw2(PIMAGE pimg)
{
for(int i=2;i<9;i++)
{
setcolor(hsv2rgb(i*36, 1, 1),pimg);
fillellipse(d[i].x, d[i].y, 1, 1,pimg); //画一个实心圆
}
putimage(0, 0, pimg, SRCPAINT);
}
int main()
{
startup();
while(1)
{
update();
draw1(Pimg1);
draw2(Pimg2);
Sleep(1);
}
getch(); //暂停,等待键盘按键
closegraph(); //关闭图形界面
return 0;
}