(源码分享)C语言浪漫流星雨表白程序 (免费源码分享平台)
(源码分享)C语言浪漫流星雨表白程序 (免费源码分享平台)
编码过程
设置星星的属性,初始化星星,画星星,进行星星的移动
设置流星的属性,初始化流星
初始化加载数据,通过贴图来画流星,进行流星的移动
设置表白文字
主函数设置数组,加载界面
02
效果展示
03
代码分享
#includestdio.h
#includestdlib.h
#includegraphics.h//图形界面库
#includeconio.h
#includetime.h
#includemmsystem.h
#pragma comment(lib,winmm)
#define MAXSTAR 1000
#define MAXMETEOR 100
IMAGE img1, img2, img3;
//星星的属性
struct Star
{
int x, y;
int step;
int color;
}star[MAXSTAR];
//流星的属性
struct Meteor
{
int x, y;
int step;
int style;
}meteor[MAXMETEOR];
//初始化星星
void initStar(int i)
{
star[i].x = rand() % 1000;//[0,999]
star[i].y = rand() % 600;
star[i].step = rand() % 6+3;//[0,5]
star[i].color = RGB(rand() % 255, rand() % 255, rand() % 255);
}
//画星星和移动星星
void moveStar(int i)
{
//画像素点
putpixel(star[i].x, star[i].y, star[i].color);
//移动处理
star[i].x += star[i].step;
//如果移动到了窗口外面
if (star[i].x1000)
{
putpixel(star[i].x, star[i].y, star[i].color);
initStar(i);
}
}
//初始化流星
void initMeteor(int i)
{
meteor[i].x = rand() % 2000-1000;//[-1000,999]
meteor[i].y = -600;//[0,599]-600--[-600,-1]
meteor[i].step = rand() % 30 + 2;
meteor[i].style = rand() % 3; //[0,2]--0,1,2
}
//初始化数据
void initDate(int i)
{
//加载图片
loadimage(img1, 1.jpg, 30, 30);
loadimage(img2, 2.jpg,40, 40);
loadimage(img3, 3.jpg, 50, 50);
for (i = 0; iMAXSTAR; i++)
{
initStar(i);
}
for (i = 0; iMAXMETEOR; i++)
{
initMeteor(i);
}
}
//画流星:贴图
void drawMeteor(int i)
{
for (i = 0; iMAXMETEOR; i++)
{
switch (meteor[i].style)
{
case 0:
putimage(meteor[i].x, meteor[i].y, img1,SRCPAINT);
break;
case 1:
putimage(meteor[i].x, meteor[i].y, img2, SRCPAINT);
break;
case 2:
putimage(meteor[i].x, meteor[i].y, img3, SRCPAINT);
break;
}
}
}
//移动流星
void moveMeteor(int i)
{
for (i = 0; iMAXMETEOR; i++)
{
meteor[i].x += meteor[i].step;
meteor[i].y += meteor[i].step;
//如果流星跑到窗口外面
if (meteor[i].x1000 || meteor[i].y600)
{
initMeteor(i);
}
}
}
//文字输出
void text()
{
settextcolor(RGB(rand() % 255, rand() % 255, rand() % 255));
settextstyle(30, 0, 楷体);
char* text[50] = { X, X, X, 我, 喜, 欢, 你, 做, 我, 女, 朋, 友, 吧, !, };
int x = 450, y = 100;
for (int i = 0; i14; i++)
{
if (i7)
outtextxy(x, y + i * 50, text[i]);
else
outtextxy(x+100, y + (i-7) * 50, text[i]);
}
}
int main()
{
initgraph(1000, 600);
mciSendString(open 2.mp3, 0, 0, 0);
mciSendString(play 2.mp3 repeat, 0, 0, 0);
srand((unsigned int)time(NULL));//随机函数种子
setbkmode(TRANSPARENT);
int i = 0;
initDate(i);
while (1)
{
cleardevice();
for (i = 0; iMAXSTAR; i++)
{
moveStar(i);
}
drawMeteor(i);
moveMeteor(i);
text();
Sleep(100);
}
_getch();
closegraph();
return 0;
}
以上就是((源码分享)C语言浪漫流星雨表白程序 (免费源码分享平台))全部内容,收藏起来下次访问不迷路!