当前位置:   article > 正文

C语言小项目—数字雨—简单易学_txt 数字雨代码

txt 数字雨代码

C语言数字雨小项目

视频教程在B站“蒸汽小毛”

编译工具:vs2013、图形库easyX

该程序在VS2013上可完美运行。

项目源码: 

  1. #include<stdio.h>
  2. #include<graphics.h> //图形库头文件
  3. #include<Windows.h>
  4. #define WIDTH 1615//960
  5. #define HEIGTH 1006//640
  6. #define STR_SIZE 20 //数字雨数组最大存储
  7. #define STR_NUM 128 //数字雨的串数
  8. #define STR_WIDTH 15 //字符串
  9. struct Rain //雨的结构
  10. {
  11. int x; //数字雨横向位置
  12. int y; //y坐标
  13. int speed; //下降速度
  14. char str[STR_SIZE]; //数字雨数组
  15. }rain[STR_NUM];
  16. char CreateCh()
  17. {
  18. char temp = 0;
  19. int flag = rand() % 3;//0 1 2
  20. if (flag == 0)
  21. {
  22. temp = rand() % 26 + 'a';
  23. }
  24. else if (flag == 1)
  25. {
  26. temp = rand() % 26 + 'A';
  27. }
  28. else
  29. {
  30. temp = rand() % 10 + '0';
  31. }
  32. return temp;
  33. }
  34. void GameInit()
  35. {
  36. //初始化基础数据
  37. for (int i = 0; i < STR_NUM; i++)
  38. {
  39. rain[i].x = i*STR_WIDTH;
  40. rain[i].y = rand() % HEIGTH;
  41. rain[i].speed = rand() % 5 + 5;//5 6 7 8 9 10
  42. }
  43. //初始化字符串
  44. for (int i = 0; i < STR_NUM; i++)
  45. {
  46. for (int j = 0; j < STR_SIZE; j++)
  47. {
  48. rain[i].str[j] = CreateCh();
  49. }
  50. }
  51. }
  52. void GameDraw()
  53. {
  54. cleardevice();
  55. for (int i = 0; i < STR_NUM; i++)
  56. {
  57. for (int j = 0; j < STR_SIZE; j++)
  58. {
  59. outtextxy(rain[i].x, rain[i].y-STR_WIDTH*j, rain[i].str[j]);
  60. settextcolor(RGB(0,255-13*j,0));
  61. }
  62. }
  63. }
  64. void GamePlay()
  65. {
  66. for (int i = 0; i < STR_NUM; i++)
  67. {
  68. rain[i].y += rain[i].speed;
  69. if (rain[i].y-STR_SIZE*STR_WIDTH>HEIGTH)
  70. {
  71. rain[i].y = 0;
  72. }
  73. }
  74. }
  75. void ChangeCh()
  76. {
  77. for (int i = 0; i < STR_NUM; i++)
  78. {
  79. rain[rand()%STR_NUM].str[rand()%STR_SIZE] = CreateCh();
  80. }
  81. }
  82. int main()
  83. {
  84. initgraph(WIDTH,HEIGTH);
  85. srand(GetTickCount());
  86. GameInit();
  87. DWORD t1, t2;
  88. t1 = t2 = GetTickCount();
  89. while (1)
  90. {
  91. BeginBatchDraw();
  92. GameDraw();
  93. ChangeCh();
  94. if (t2 - t1 > 20)//使游戏下落延时
  95. {
  96. GamePlay();
  97. t1 = t2;
  98. }
  99. t2 = GetTickCount();
  100. EndBatchDraw();
  101. //Sleep(20); //使整个程序延时
  102. }
  103. getchar();
  104. closegraph();
  105. return 0;
  106. }

这是简易版本的,以后大概会发复杂炫酷点的。

对于刚学完C语言的初学者,直接做这种小项目也是一件非常困难的事情,中间还有很大的鸿沟。老师上课讲授的知识非常有限,大部分知识还需要同学们自己去探索。程序的写法也有很多很多种,不必拘于一种,也期待各位写出更加简练高效的程序。个人小白,如有错误也希望各位大佬能够指出。需要源码的可以来我的学习群里领取,八零六零,四一,五久久。更多学习资料和小游戏源码都有,还有一群一起学习C语言C++的好兄弟!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/94182
推荐阅读
相关标签
  

闽ICP备14008679号