VS2019 +easyx 实现闪烁的星空(夜景)

开头

主要是,之前,老师喊写c语言作业,就有这么个要求,用c语言写一个闪烁的星空。
说实话,用c#实现挺简单的。但还是用easyx来玩。

因为easyx的效果特别好,美工特别好。

背景

在这里插入图片描述
就是用这个。

效果图

在这里插入图片描述
时不时有流星划过夜空,建议自己去配bgm.

代码

#include<iostream>
#include<graphics.h>
#include<time.h>
#include<process.h>
using namespace std;

int windowwid = 920;
int windowhig;

struct STAR
{
	int x;
	int y;
};
STAR star[100];

void meteor()//演示流星的图像,设计成延时后产生流星
{

	int a = rand() % windowwid;
	int b = rand() % windowhig;

	int tempA, tempB;
	tempA = a;
	tempB = b;
	for (int i = 0; i < 40; i++)
	{

		setcolor(WHITE);
		setlinestyle(PS_SOLID, 1);
		circle(a, b, 1);

		Sleep(10);

		a = a - 2;
		b = b + 1;

	}
	for (int m = 0; m < 40; m++)
	{
		setcolor(BLACK);
		setlinestyle(PS_SOLID, 1);
		circle(tempA, tempB, 1);

		Sleep(10);

		tempA = tempA - 2;
		tempB = tempB + 1;
	}

}

void startup()//为星星的坐标数据初始化

{
	for (int i = 0; i < 20; i++)
	{
		star[i].x = rand() % 920;
		star[i].y = rand() % 593;
	}
}
void paintstar()//通过putpixel在屏幕打印出像素,类似于星星
{
	for (int i = 0; i < 20; i++)
	{
		putpixel(star[i].x, star[i].y, WHITE);
	}

}
void hidestar()//适当的时间后将星星遮盖
{
	for (int i = 0; i < 20; i++)
	{
		putpixel(star[i].x, star[i].y, BLACK);
	}
}
void moon()
{
	setcolor(WHITE);
	setfillcolor(WHITE);
	fillcircle(180, 100, 60);
	circle(180, 100, 60);

	int a1 = 210;//可调节
	int a2 = 80;

	setcolor(BLACK);
	setfillcolor(BLACK);
	fillcircle(a1, a2, 60);
	circle(a1, a2, 50);

}

int main()
{



	int x2; int y2;

	windowhig = windowwid * 0.618;
	initgraph(windowwid, windowhig);

	moon();

	
	
	for(int m=1;m>0;m++)
	{
		startup();
		paintstar();
		
		if (m % 3 == 0)
		{
			meteor();
		}
		Sleep(1500);
		hidestar();
	}
	system("pause");
	closegraph();
	

}
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页