【C++】教你如何在中秋节给家人们画一个星空

前言

将至中秋,想必大家都想给自己的家人们一个惊喜吧!今天就手把手地教大家如何用C++和Easyx画一个星空。

(效果图:)


一、准备Easyx

首先我们要前往Easyx官网下载安装程序,

下载完成后打开程序,并点击“下一步”;

随后选择你的编辑器并点击“安装”。


 二、函数介绍

我在这里简单介绍一下几个今天要用的函数:

1、solidcircle

这个函数用于画无边框的填充圆。

函数原型:

void solidcircle(
	int x,
	int y,
	int radius
);

参数解释:

x:圆心 x 坐标

y:圆心 y 坐标

radius:圆的半径

2、setfillcolor

这个函数用于设置当前设备填充颜色。

函数原型:

void setfillcolor(COLORREF color);

参数解释:

color:填充的颜色

3、getbkcolor

这个函数用于获取当前设备背景色。

COLORREF getbkcolor();

4、initgraph

这个函数用于初始化绘图窗口。

函数原型:

HWND initgraph(
	int width,
	int height,
	int flag = NULL
);

参数解释:

width:绘图窗口的宽度

height绘图窗口的高度

flag:绘图窗口的样式,默认为 NULL。可为以下值:

含义
EW_DBLCLKS 在绘图窗口中支持鼠标双击事件
EW_NOCLOSE 禁用绘图窗口的关闭按钮
EW_NOMINIMIZE 禁用绘图窗口的最小化按钮
EW_SHOWCONSOLE 显示控制台窗口

5、closegraph

这个函数用于关闭绘图窗口。

void closegraph();

6、putpixel

这个函数用于画点。

void putpixel(
	int x,
	int y,
	COLORREF color
);

参数

x:点的 x 坐标

y:点的 y 坐标

color:点的颜色


 三、实现原理

这个项目的实现原理并不难,月亮就是一个无边框的填充圆;大星星就是先画一个圆,再在四周用背景色画几个圆;小星星就是在随机位置画点。


四、教程

1、打开头文件:

#include <graphics.h>

2、在主函数中(下同)初始化窗口:

initgraph(640, 480);

3、设置填充颜色:

setfillcolor(YELLOW);

4、画一个无边框的填充圆:

solidcircle(450, 80, 50);

由于我们不止只画一个大星星,所以我们最好用函数来实现。

5、在主函数外做一个画大星星的函数:

void star(int x, int y) {
	setfillcolor(YELLOW);
	solidcircle(x, y, 20);
	setfillcolor(getbkcolor());
	solidcircle(x - 20, y - 20, 20);
	solidcircle(x + 20, y - 20, 20);
	solidcircle(x - 20, y + 20, 20);
	solidcircle(x + 20, y + 20, 20);
	return;
}

6、在主函数中接着写:

star(50, 50);
star(570, 400);
star(300, 60);
star(250, 300);
star(50, 400);

又因为我们的小星星的位置是随机的,为了产生随机数,我们需要:

7、引入头文件:

#include <time.h>

8、在主函数开头写一句:

srand((unsigned int)time(NULL));

9、再在画大星星的代码后面加上一段画(一百个)小星星的代码:

for (int i = 0; i < 100; i++) {
	putpixel(rand() % 640, rand() % 480, YELLOW);
}

为了做出一个按下任意键退出的效果,我们需要:

10、引入头文件:

#include <conio.h>

11、在画小星星的代码后面写一句:

_getch();

12、最后,关闭窗口,退出程序:

closegraph();
return 0;

五、完整代码

#include <graphics.h>
#include <time.h>
#include <conio.h>

void star(int x, int y) {
	setfillcolor(YELLOW);
	solidcircle(x, y, 20);
	setfillcolor(getbkcolor());
	solidcircle(x - 20, y - 20, 20);
	solidcircle(x + 20, y - 20, 20);
	solidcircle(x - 20, y + 20, 20);
	solidcircle(x + 20, y + 20, 20);
	return;
}

int main() {
	srand((unsigned int)time(NULL));
	initgraph(640, 480);
	setfillcolor(YELLOW);
	solidcircle(450, 80, 50);
	star(50, 50);
	star(570, 400);
	star(300, 60);
	star(250, 300);
	star(50, 400);
	for (int i = 0; i < 100; i++) {
		putpixel(rand() % 640, rand() % 480, YELLOW);
	}
	_getch();
	closegraph();
	return 0;
}

好了,今天就到这里了。文章存在借鉴。喜欢的麻烦支持一下!

猜你喜欢

转载自blog.csdn.net/qq_43546083/article/details/126548294