经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
C/C++编程日记:编写图形界面—打造专属芋泥的浪漫表白程序!
来源:cnblogs  作者:大天使维迦  时间:2021/4/12 9:56:26  对本文有异议

前面的一部分弄出来了,基于代码是真心太多,也需要图片,插件、、、所以说,需要后面的几个点:

1、 初始化烟花参数 

2、加载图片

3、在一定范围内筛选可发射的烟花,并初始化发射参数,输出烟花弹到屏幕,播放声音

4、扫描烟花弹并发射

5、显示花样

6、绽放烟花 到时候一并会发的

谁说程序员不浪漫的?教你打造一个浪漫的表白程序,配上好听的音乐,瞬间高大上的感觉,效果图。


 

 

下面,发下代码吧,简单的C语言和easyx一起打造浪漫的程序。

  1. /***** 宏定义区 ******/
  2.  
  3. #define NUM13// 烟花种类数量宏定义
  4.  
  5. #define PI 3.1415926548
  6.  
  7. /***** 结构定义区 **********/
  8.  
  9. // 烟花结构
  10.  
  11. struct FIRE
  12. {
  13. int r;// 当前爆炸半径
  14.  
  15. int max_r;// 爆炸中心距离边缘最大半径
  16.  
  17. int x, y;// 爆炸中心在窗口的坐标
  18.  
  19. int cen_x, cen_y;// 爆炸中心相对图片左上角的坐标
  20.  
  21. int width, height;// 图片的宽高
  22.  
  23. int xy[240][240];// 储存图片像素点
  24.  
  25. bool show;// 是否绽放
  26.  
  27. bool draw;// 开始输出像素点
  28. DWORD t1, t2, dt;// 绽放速度
  29. }Fire[NUM];
  30. // 烟花弹结构
  31.  
  32. struct JET
  33. {
  34. int x, y;// 喷射点坐标
  35.  
  36. int hx, hy;// 最高点坐标------将赋值给 FIRE 里面的 x, y
  37.  
  38. int height;// 烟花高度
  39.  
  40. bool shoot;// 是否可以发射
  41. DWORD t1, t2, dt;// 发射速度
  42. IMAGE img[2];// 储存花弹一亮一暗图片
  43.  
  44. byte n : 1;// 图片下标
  45. }Jet[NUM];
  46. /**** 函数申明区 ****/
  47.  
  48. void welcome();
  49. void Init(int);// 初始化烟花
  50.  
  51. void Load();// 加载烟花图片
  52.  
  53. void Shoot();// 发射烟花
  54.  
  55. void Chose(DWORD&);// 筛选烟花
  56.  
  57. void Style(DWORD&);// 发射样式
  58.  
  59. void Show(DWORD*);// 绽放烟花
  60. // 主函数
  61.  
  62. void main()
  63. {
  64. initgraph(1200, 800);
  65. srand(time(0));
  66. // 播放背景音乐
  67. mciSendString("open ./fire/小幸运.mp3 alias bk", 0, 0, 0);
  68. mciSendString("play bk repeat", 0, 0, 0);
  69. welcome();
  70. DWORD t1 = timeGetTime();// 筛选烟花计时
  71. DWORD st1 = timeGetTime();// 播放花样计时
  72. DWORD* pMem = GetImageBuffer();// 获取窗口显存指针
  73.  
  74. for (int i = 0; i < NUM; i++)// 初始化烟花
  75. {
  76. Init(i);
  77. Load();// 将烟花图片信息加载进相应结构中
  78. BeginBatchDraw();// 开始批量绘图
  79.  
  80. while (!kbhit())
  81. {
  82. Sleep(10);
  83. // 随机选择 4000 个像素点擦除
  84.  
  85. for (int clr = 0; clr < 1000; clr++)
  86. {
  87. for (int j = 0; j < 2; j++)
  88. {
  89. int px1 = rand() % 1200;
  90. int py1 = rand() % 800;
  91. if (py1 < 799)// 防止越界
  92. pMem[py1 * 1200 + px1] = pMem[py1 * 1200 + px1 + 1] = BLACK;// 对显存赋值擦出像素点
  93. }
  94. }
  95. Chose(t1);// 筛选烟花
  96. Shoot();// 发射烟花
  97. Show(pMem);// 绽放烟花
  98. Style(st1);// 花样发射
  99. FlushBatchDraw();// 显示前面的所有绘图操作
  100. }
  101. }
  102. void welcome()
  103. {
  104. //setfillstyle(0);
  105. setcolor(YELLOW);
  106. for (int i = 0; i < 50; i++)
  107. {
  108. int x = 600 + int(180 * sin(PI * 2 * i / 60));
  109. int y = 200 + int(180 * cos(PI * 2 * i / 60));
  110. cleardevice();
  111. settextstyle(i, 0, "楷体");
  112. outtextxy(x, y, "双十一,不剁手!");
  113. outtextxy(x-130, y+100, "写段代码送女友!");
  114. Sleep(25);
  115. }
  116. getchar();
  117. cleardevice();
  118. settextstyle(25, 0, "楷体");
  119. outtextxy(400, 200, "原来你是我最想留住的幸运");
  120. outtextxy(400, 250, "原来我们和爱情曾经靠得那么近");
  121. outtextxy(400, 300, "那为我对抗世界的决定");
  122. outtextxy(400, 350, "那陪我淋的雨");
  123. outtextxy(400, 400, "一幕幕都是你");
  124. outtextxy(400, 450, "一尘不染的真心。");
  125. outtextxy(600, 500, "----《有幸遇见你》");
  126. getchar();
  127. }

另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~

点击即可免费分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

免费学习书籍:


 

免费学习资料:


 

原文链接:http://www.cnblogs.com/zuishuaideou/p/14641363.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号