编程语言用C语言来看“流星雨”,听说向流星许愿就会有好运气

再亮眼的流星,也会一闪而过。

嗨!这里是狐狸~~

没错,我又来了,上次的“烟花”表白程序你学废了吗,这次我次我又来给大家支招啦,学会了“烟花”,我们一起来看“流星雨”吧!!!   直接上界面

上次忘记说了,因为我们是用C语言写的所以是控制台程序,创造不出来界面,那怎么办呢,我们就要用Windows的远房表亲EasyX图形库来建界面了,上次忘记说了,望谅解!!!

我们今天就和往常一样一步一步的教大家如何去完成这个“流星雨”表白程序吧!

一、头文件

最近总是被吐槽为什么没有头文件,原因是呢,我觉得我分享项目最主要的目的是让大家学知识,头文件这些没营养的,开始就没有考虑,但鉴于需要的小伙伴太多了,我就发出来吧!!!

#include
#include    //第三方图形库,需要安装
#include
#include#include
#pragma comment(lib,"winmm.lib")

二、结构体

老朋友结构体他又来了,不用多说,直接看

struct Star      //小星星
{int x;int y;int r;int speed;           //速度COLORREF color;     //颜色
};
struct Meteor
{int x;int y;int speed;
};

三、初始化

初始化星星以及流星,要用到随机函数哦,让星星和流星看起来更自然。

//初始化星星
void initStar(int i)
{star[i].x = rand() % getwidth();star[i].y = rand() % getheight();star[i].r = rand() % 3 + 1;star[i].speed = rand() % 5;   //0 1 2 3 4star[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);
}
//初始化流星
void initMeteor(int i)
{//[0,2400)//[-1200,1200)meteor[i].x = rand() % (2 * getwidth()) - getwidth(); //[-1200,1200)meteor[i].y = 20 - 200;meteor[i].speed = rand()%15+1;
}

四、绘制函数

绘制星星以及流星,简单的贴图就行啦

绘制星星
void drawStar()
{for (size_t i = 0; i < STAR_NUM; i++){//putpixel(star[i].x, star[i].y, star[i].color);setfillcolor(star[i].color);solidcircle(star[i].x, star[i].y, star[i].r);}
}
//绘制流星
void drawMeteor()
{for (size_t i = 0; i < METEOR_NUM; i++){putimage(meteor[i].x, meteor[i].y, img + rand() % 2,SRCPAINT);}
}

五、移动函数

不仅流星要动,星星也要跟着动,怎么动才能更自然,自己也可以优化一下。

//星星的移动
void moveStar()
{for (size_t i = 0; i < STAR_NUM; i++){star[i].x+=star[i].speed;if (star[i].x > getwidth()){star[i].x = 0;}}
}//流星的移动
void moveMeteor()
{for (size_t i = 0; i < METEOR_NUM; i++){meteor[i].x += meteor[i].speed;meteor[i].y += meteor[i].speed;if (meteor[i].x >= getwidth() || meteor[i].y >= getheight()){initMeteor(i);}}
}

六、界面设计

接下来是我们的界面设计函数了,这个也是大家自由发挥的地方,可以自己去查一些界面的设置函数,自己设计自己的界面,里面的情话就可以自己去发挥了!!!

void welcome()
{//播放音乐 mci media device interface mciSendString(_T("open ./images/浪漫空气.mp3 alias bgm"), NULL, 0, NULL);mciSendString(_T("play bgm"), NULL, 0, NULL);//设置随机数种子srand((unsigned)time(NULL));/*@思考:表白的话语*///设置背景模式setbkmode(TRANSPARENT);//设置文字样式settextstyle(40, 0, _T("华文行楷"));//如果没有按键按下,就一直循环while (!_kbhit()){//清屏cleardevice();putimage(0, 0, &bk);//设置文字颜色settextcolor(RGB(rand()%256, rand() % 256, rand() % 256));//输出文字int tx = (getwidth() - textwidth(_T("XXX我喜欢你"))) / 2;outtextxy(tx, 20, _T("XXX我喜欢你"));outtextxy(200, 100, _T("血包我不要,我只要你"));outtextxy(200, 150, _T("老师我在床上更爱你"));outtextxy(200, 200, _T("宝 你就想cf里的源武器 便宜但没人要"));outtextxy(200, 250, _T("春风十里 ,我只爱你"));outtextxy(200, 300, _T("我的程序只有你一个主函数"));outtextxy(200, 350, _T("孤单不是与生俱来,而是由你爱上一个人的那一刻开始。"));outtextxy(200, 400, _T("如果奇迹有颜色,那一定是彩虹的颜色"));outtextxy(200, 450, _T("山有木兮木有枝,心悦君兮君不知"));outtextxy(200, 500, _T("我从不畅享未来,遇到了你以后我每天都在想"));outtextxy(200, 550, _T("------------ 爱你XXX"));for (size_t i = 0; i < 10; i++){settextcolor(RGB(rand() % 256, rand() % 256, rand() % 256));outtextxy(rand()%getwidth(), rand()%getheight(), _T("♥"));}Sleep(1000);}
}

七、主函数

最后是我们的主函数,把之前的函数一起调用起来吧

int main()
{//1,创建图形窗口initgraph(1200, 800);//设置背景颜色//setbkcolor(RGB(99, 99, 99));//cleardevice();loadimage(&bk, _T("./images/bk.png"),getwidth(),getheight());for (size_t i = 0; i < STAR_NUM; i++){initStar(i);}for (size_t i = 0; i < METEOR_NUM; i++){initMeteor(i);}loadImg();welcome();//双缓冲绘图BeginBatchDraw();while (true){cleardevice();putimage(0, 0, &bk);drawStar();moveStar();drawMeteor();moveMeteor();FlushBatchDraw();}EndBatchDraw();
getchar();return 0;
}

总结

好了,这样一来,“流星雨”表白程序你也已经拿到手了,这还不够吗,以后别说咱们程序员不浪漫,那是不想动手,浪漫起来谁也抵挡不住,代码不难,用心去做谁都可以,加油吧!!!

视频讲解

想要看视频讲解的看这里,讲得很详细,可以认真的听一下

听说向流星许愿就会有好运气正在上传…重新上传取消​https://www.bilibili.com/video/BV1Tv411g7xL/

后续UP主还会发布更多的项目源码以及学习资料,希望大家可以持续关注,有什么问题可以回帖留言。想要C/C++学习资料以及其他项目的源码的可以加群【684197747】【806041599】了解。想要对程序员的未来发展有兴趣的可以关注微信公众号:【狐狸的编码时光】,希望和大家一起学习进步!!!

感谢

在这里向大家说声感谢,我的“烟花”表白程序上了热榜第一,我很感动,我也很感谢大家的支持,让我觉得自己的努力并不是竹篮打水一场空,我也希望大家可以真实的学到东西,而不是说单纯的只是看一下程序运行的结果,或者说简单的给那个人看罢了,我也不知道这篇发完的结果怎么样,但不管怎么样,我也是希望大家可以在未来不管遇到什么,看到什么都不要放弃学习的机会,再次感谢大家!

编程语言用C语言来看“流星雨”,听说向流星许愿就会有好运气相关推荐

  1. 用C语言来看“流星雨”,听说向流星许愿就会有好运气

    序 再亮眼的流星,也会一闪而过. 嗨!这里是狐狸~~ 没错,我又来了,上次的"烟花"表白程序你学废了吗,这次我次我又来给大家支招啦,学会了"烟花",我们一起来看 ...

  2. DL之RNN:人工智能为你写代码——基于TF利用RNN算法实现生成编程语言代码(C++语言)、训练测试过程全记录

    DL之RNN:基于TF利用RNN算法实现生成编程语言代码(C语言).训练&测试过程全记录 目录 输出结果 监控模型 训练&测试过程全记录 训练的数据集展示 输出结果 1.test01 ...

  3. javascript 西瓜一期 02 编程语言与标记语言的区别

    标记语言 主要是指 html 因为html为我们的显示,提供了内容.包括了文字,图片等等 编程语言 动态的语言 可以让固定的内容在不同的情况下,产生不同的反应 图片理解 >标记语言 指html超 ...

  4. 机器人的编程语言是什么语言

    机器人的编程语言是什么语言?对于很多的家长们来说,他们的主要任务就是培养孩子的学习.于是他们会十分认真的给孩子选择一些能够有利于孩子成长的课程.就拿现在很多的家长想要孩子去学习机器人编程的课程来说,有 ...

  5. C语言程序模拟流星雨,C语言_流星雨的实现.doc

    C语言_流星雨的实现 HUNAN UNIVERSITY 程序设计训练报告 题目 流 星 雨 的 实 现 学生姓名毛 宇 锋学生学号201208060116专业班级信息安全一班学院名称信息科学与工程学院 ...

  6. 编译《自制编程语言 基于c语言》 郑钢 书中代码 idea

    编译<自制编程语言 基于c语言> 郑钢 书中代码 文章目录 编译<自制编程语言 基于c语言> 郑钢 书中代码 编译器 代码获取 正规途径 其他途径 运行 hello world ...

  7. 【一天一门编程语言】Go 语言程序设计极简教程

    文章目录 Go 语言程序设计极简教程 Go 语言程序设计极简教程 第一章:Go 语言基础 1.1 Go 语言简介 1.2 Go 语言安装 1.2.1 下载安装包 1.2.2 安装 Go 语言 1.3 ...

  8. c语言贪吃蛇添加排行榜,c语言贪吃蛇排行榜_...12年4月编程语言排行榜 C语言荣归宝座...

    12年4月编程语言排行榜 C语言荣归宝座 JPG,902x531,131KB,424_250 C语言在目前的编程语言排行榜上占据头名的位置-全屏显示课程章节 JPG,500x267,232KB,467 ...

  9. c语言 ibe:1,2020年1月编程语言排行榜C语言获得2019年度编程语言(20200913010753).pdf...

    2020 年 1 月编程语言排行榜 C 语言获得 2019 年度编程语言 想必很多人都认为 Python 会蝉联 TOIBE年度编程语言宝座吧,不过,这一次获得年度编 程语言的是老编程语言 C 语言, ...

最新文章

  1. 率清华团队研发“天机芯”登《Nature》封面,他说类脑计算是发展人工通用智能的基石...
  2. 这次终于彻底理解了傅里叶变换
  3. 【冰极峰教程系列之二】:牢不可破的九宫格布局
  4. Win2008 r2 下修改mysql data目录的方法
  5. 坐拥双妹、佰草集,上海家化是怎样将一只脚留在高端护肤品门外的?
  6. Canvas的基本用法
  7. 网友投诉顺丰快递员私拆快递物品摆拍、言语骚扰 官方处理来了...
  8. 必须掌握的Python技巧(一)
  9. i9 9900k mysql_i9-9900K性能如何 CPU天梯图秒懂i9-9900K性能排行
  10. Linux里如何查找文件内容
  11. mysql判断时间是否在某个区间_如何正确理解 RT 并监控 MySQL 的响应时间
  12. 千万数据,如何快速商品分页
  13. java毕业生设计药品管理系统演示录像2021计算机源码+系统+mysql+调试部署+lw
  14. 基于收发一体超声波探头的超声波测距方案(附源代码和原理图)
  15. java自旋锁使用_10.Java锁之自旋锁
  16. 第八篇order订单专题(2)订单通知及属性
  17. 基于最大似然估计(matlab实验)
  18. 门禁系统远程无线联网解决方案
  19. HDMI之EDID使用说明
  20. 企业中台最佳实践--什么是中台(一)

热门文章

  1. SOA架构和微服务架构的区别是什么
  2. 给body加100vh,100vm出现滚动条的解决方法
  3. wegame饥荒一直登录中_苹果游戏推荐ios帐号共享 一小时人生(希望之村)移动版 模拟经营沙盒世界饥荒游戏...
  4. 梅科尔工作室——深度学习第四课
  5. w5500网线拔掉检测不到_用一根网线,我废了整栋楼的网络!!!
  6. 谱聚类(Spectral Clustering)原理及Python实现
  7. PHP开发的在线版网恋照妖镜源码使用方法
  8. pureftpd mysql 语句_Pureftpd之MYSQL数据库所使用的函数
  9. 办公小技巧:怎么在PDF文件中添加页码
  10. 评定成绩级别和查询学生成绩