100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > C语言小项目—数字雨—简单易学

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

时间:2023-10-17 08:58:37

相关推荐

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

C语言数字雨小项目

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

编译工具:vs、图形库easyX

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

项目源码:

#include<stdio.h>#include<graphics.h> //图形库头文件#include<Windows.h>#define WIDTH 1615//960#define HEIGTH 1006//640#define STR_SIZE 20 //数字雨数组最大存储#define STR_NUM 128 //数字雨的串数#define STR_WIDTH 15 //字符串struct Rain //雨的结构{int x; //数字雨横向位置int y; //y坐标int speed; //下降速度char str[STR_SIZE]; //数字雨数组}rain[STR_NUM];char CreateCh(){char temp = 0;int flag = rand() % 3;//0 1 2if (flag == 0){temp = rand() % 26 + 'a';}else if (flag == 1){temp = rand() % 26 + 'A';}else{temp = rand() % 10 + '0';}return temp;}void GameInit(){//初始化基础数据for (int i = 0; i < STR_NUM; i++){rain[i].x = i*STR_WIDTH;rain[i].y = rand() % HEIGTH;rain[i].speed = rand() % 5 + 5;//5 6 7 8 9 10}//初始化字符串for (int i = 0; i < STR_NUM; i++){for (int j = 0; j < STR_SIZE; j++){rain[i].str[j] = CreateCh();}}}void GameDraw(){cleardevice();for (int i = 0; i < STR_NUM; i++){for (int j = 0; j < STR_SIZE; j++){outtextxy(rain[i].x, rain[i].y-STR_WIDTH*j, rain[i].str[j]);settextcolor(RGB(0,255-13*j,0));}}}void GamePlay(){for (int i = 0; i < STR_NUM; i++){rain[i].y += rain[i].speed;if (rain[i].y-STR_SIZE*STR_WIDTH>HEIGTH){rain[i].y = 0;}}}void ChangeCh(){for (int i = 0; i < STR_NUM; i++){rain[rand()%STR_NUM].str[rand()%STR_SIZE] = CreateCh();}}int main(){initgraph(WIDTH,HEIGTH);srand(GetTickCount());GameInit();DWORD t1, t2;t1 = t2 = GetTickCount();while (1){BeginBatchDraw();GameDraw();ChangeCh();if (t2 - t1 > 20)//使游戏下落延时{GamePlay();t1 = t2;}t2 = GetTickCount();EndBatchDraw();//Sleep(20); //使整个程序延时}getchar();closegraph();return 0;}

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。