这是用VS2019借用easyx图形库写的代码,能力有限
easyx点此官网下载安装
#include<easyx.h>
#include<conio.h>
#include<math.h>
#include <time.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
#define PI 3.14
#define X 640
#define Y 480
void music() {
mciSendString(_T("open ./music/花海.mp3"), NULL, 0, NULL);//打开音乐
mciSendString(_T("play ./music/花海.mp3 repeat"), NULL, 0, NULL);//播放音乐
}
void tree() {
cleardevice();
settextcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
settextstyle(30, 0, _T("宋体"));
outtextxy(rand() % X - 10, rand() % Y - 10, _T("❤"));
outtextxy(rand() % X - 10, rand() % Y - 10, _T("❤"));
outtextxy(rand() % X - 10, rand() % Y - 10, _T("❤"));
outtextxy(rand() % X - 10, rand() % Y - 10, _T("❤"));
outtextxy(rand() % X - 10, rand() % Y - 10, _T("❤"));
//第一个三角形
setlinecolor(RGB(144, 238, 144));
setfillcolor(RGB(34, 139, 34));
POINT pts1[] =
{
{X / 2,Y / 10},//顶点
{2 * X / 5,19 * Y / 100},//左点
{3 * X / 5,19 * Y / 100}//右点
};
solidpolygon(pts1, 3);
// 绘制五角星
POINT pts[5];
double a = PI / 2;
for (int i = 0; i < 5; i++)
{
pts[i].x = int(X / 2 + cos(a) * 23);
pts[i].y = int(Y / 10 - sin(a) * 23);
a += PI * 4 / 5;
}
setpolyfillmode(WINDING);
setfillcolor(RGB(255, 230, 0));
solidpolygon(pts, 5);
//第2个三角形
setlinecolor(RGB(144, 238, 144));
setfillcolor(RGB(34, 139, 34));
POINT pts2[] =
{
{X / 2,3 * Y / 20 },//顶点
{8 * X / 25,3 * Y / 10},//左点
{17 * X / 25,3 * Y / 10}//右点
};
solidpolygon(pts2, 3);
//第三个三角形
POINT pts3[] =
{
{X / 2,6 * Y / 25 },//顶点
{1 * X / 4,43 * Y / 100},//左点
{3 * X / 4,43 * Y / 100}//右点
};
solidpolygon(pts3, 3);
//树干
setfillcolor(RGB(139, 69, 19));
solidrectangle(9 * X / 20, 43 * Y / 100, 11 * X / 20, 7 * Y / 10);
}
void bulb() {
setfillcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
solidcircle(12 * X / 25, Y / 10 + (19 * Y / 100 - Y / 10), 5);
setfillcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
solidcircle(45 * X / 100, Y / 10 + 13 * Y / 100, 5);
setfillcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
solidcircle(49 * X / 100, 28 * Y / 100, 5);
setfillcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
solidcircle(44 * X / 100, 31 * Y / 100, 5);
setfillcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
solidcircle(13 * X / 25, Y / 10 + (19 * Y / 100 - Y / 10), 5);
setfillcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
solidcircle(55 * X / 100, Y / 10 + 13 * Y / 100, 5);
setfillcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
solidcircle(54 * X / 100, 29 * Y / 100, 5);
setfillcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
solidcircle(53 * X / 100, 34 * Y / 100, 5);
setfillcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
solidcircle(40 * X / 100, 36 * Y / 100, 5);
setfillcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
solidcircle(35 * X / 100, 40 * Y / 100, 5);
setfillcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
solidcircle(50 * X / 100, 37 * Y / 100, 5);
setfillcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
solidcircle(65 * X / 100, 40 * Y / 100, 5);
}
int main() {
initgraph(X, Y);
srand((unsigned)time(NULL));//随机数种子
setbkcolor(WHITE);
setbkmode(TRANSPARENT);//字体背景透明
music();
BeginBatchDraw();
while (1) {
tree();
bulb();
FlushBatchDraw();
Sleep(500);//延迟0.5秒
}
_getch();
closegraph();
return 0;
}