视频教程在B站“蒸汽小毛”
编译工具:vs2013、图形库easyX该程序在VS2013上可完美运行。
项目源码:#include#include //图形库头文件 #include #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 2 if (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++的好兄弟!



