VS2019 +easyx 实现闪烁的星空(夜景)
程序员文章站
2022-06-16 18:03:13
开头主要是,之前,老师喊写c语言作业,就有这么个要求,用c语言写一个闪烁的星空。说实话,用c#实现挺简单的。但还是用easyx来玩。因为easyx的效果特别好,美工特别好。背景就是用这个。效果图时不时有流星划过夜空,建议自己去配bgm.代码#include#include#include#includeusing namespace std;in...
开头
主要是,之前,老师喊写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();
}
本文地址:https://blog.csdn.net/fightte/article/details/110147559
下一篇: JavaWeb——响应编码与请求编码