EasyX—数字雨
1 ///////////////////////////////////////////////////////////////////// 2 // 程序名称:数字雨 3 // 编译环境:VC6.0 EasyX 4 // 作 者:flx413 5 // 时 间:2016-5-2 6 ///////////////////////////////////////////////////////////////////// 7 8 #include <stdio.h> 9 #include <windows.h> 10 #include <graphics.h> 11 #include <stdlib.h> 12 #include <time.h> 13 14 #define SCREEN_WIDTH 1366 15 #define SCREEN_HEIGHT 768 16 #define DEF_RAIN_NUM 91 //雨的列数 17 18 //数字雨开始的位置 19 int g_nRainPos[DEF_RAIN_NUM] = { 0 }; 20 21 //数字雨的字符串 22 char g_strRain[DEF_RAIN_NUM][10] = { 0 }; 23 24 //随机产生一个字母 25 char CreateRandomNum() { 26 char nRandomNum = 0; 27 28 while( 1 ) { 29 nRandomNum = rand() % 123; //随机产生0~122的一个字符 30 31 if( ( nRandomNum >= 65 && nRandomNum <= 90 ) || nRandomNum >= 97 ) { 32 return nRandomNum; 33 } 34 } 35 } 36 37 //随机产生数字雨的开始位置 38 void InitPos() { 39 for( int i = 0; i < DEF_RAIN_NUM; i++ ) { 40 g_nRainPos[i] = rand() % SCREEN_HEIGHT; 41 } 42 } 43 44 //初始化数字雨 45 void InitNumRain() { 46 for( int i = 0; i < DEF_RAIN_NUM; i++ ) { 47 for( int j = 0; j < 10; j++ ) { 48 g_strRain[i][j] = CreateRandomNum(); 49 } 50 } 51 } 52 53 //显示雨 54 void ShowNumRain() { 55 for( int i = 0; i < DEF_RAIN_NUM; i++ ) { 56 //设置字体颜色 57 settextcolor( RGB( 255, 255, 255 ) ); //白色 58 for( int j = 0; j < 10; j++ ) { 59 outtextxy( i * 15, g_nRainPos[i] - 15 * j, g_strRain[i][j] ); 60 settextcolor( RGB( 0, 255 - 28 * j, 0 ) ); 61 } 62 } 63 64 for( i = 0; i < DEF_RAIN_NUM; i++ ) { 65 g_nRainPos[i] += 15; //屏幕刷新后雨的位置下降15 66 } 67 68 for( i = 0; i < DEF_RAIN_NUM; i++ ) { 69 if( g_nRainPos[i] - 10 * 15 >= SCREEN_HEIGHT ) { 70 g_nRainPos[i] = 0; 71 } 72 } 73 } 74 int main() { 75 srand((unsigned)time(NULL)); 76 initgraph( SCREEN_WIDTH, SCREEN_HEIGHT ); 77 78 InitPos(); 79 InitNumRain(); 80 81 BeginBatchDraw(); 82 83 while( 1 ) { 84 InitNumRain(); 85 ShowNumRain(); 86 FlushBatchDraw(); 87 Sleep( 100 ); //延时0.1秒 88 cleardevice(); //清空屏幕 89 } 90 91 EndBatchDraw(); 92 closegraph(); 93 return 0; 94 }
截图: