本文实例为大家分享了C语言 EasyX实现数字雨的具体代码,供大家参考,具体内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
/ / 程序名称:数字雨
/ / 编译环境:VC6. 0 EasyX
/ / 作 者:flx413
/ / 时 间: 2016 - 5 - 2
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
#include <stdio.h>
#include <windows.h>
#include <graphics.h>
#include <stdlib.h>
#include <time.h>
#define SCREEN_WIDTH 1366
#define SCREEN_HEIGHT 768
#define DEF_RAIN_NUM 91 //雨的列数
/ / 数字雨开始的位置
int g_nRainPos[DEF_RAIN_NUM] = { 0 };
/ / 数字雨的字符串
char g_strRain[DEF_RAIN_NUM][ 10 ] = { 0 };
/ / 随机产生一个字母
char CreateRandomNum() {
char nRandomNum = 0 ;
while ( 1 ) {
nRandomNum = rand() % 123 ; / / 随机产生 0 ~ 122 的一个字符
if ( ( nRandomNum > = 65 && nRandomNum < = 90 ) || nRandomNum > = 97 ) {
return nRandomNum;
}
}
}
/ / 随机产生数字雨的开始位置
void InitPos() {
for ( int i = 0 ; i < DEF_RAIN_NUM; i + + ) {
g_nRainPos[i] = rand() % SCREEN_HEIGHT;
}
}
/ / 初始化数字雨
void InitNumRain() {
for ( int i = 0 ; i < DEF_RAIN_NUM; i + + ) {
for ( int j = 0 ; j < 10 ; j + + ) {
g_strRain[i][j] = CreateRandomNum();
}
}
}
/ / 显示雨
void ShowNumRain() {
for ( int i = 0 ; i < DEF_RAIN_NUM; i + + ) {
/ / 设置字体颜色
settextcolor( RGB( 255 , 255 , 255 ) ); / / 白色
for ( int j = 0 ; j < 10 ; j + + ) {
outtextxy( i * 15 , g_nRainPos[i] - 15 * j, g_strRain[i][j] );
settextcolor( RGB( 0 , 255 - 28 * j, 0 ) );
}
}
for ( i = 0 ; i < DEF_RAIN_NUM; i + + ) {
g_nRainPos[i] + = 15 ; / / 屏幕刷新后雨的位置下降 15
}
for ( i = 0 ; i < DEF_RAIN_NUM; i + + ) {
if ( g_nRainPos[i] - 10 * 15 > = SCREEN_HEIGHT ) {
g_nRainPos[i] = 0 ;
}
}
}
int main() {
srand((unsigned)time(NULL));
initgraph( SCREEN_WIDTH, SCREEN_HEIGHT );
InitPos();
InitNumRain();
BeginBatchDraw();
while ( 1 ) {
InitNumRain();
ShowNumRain();
FlushBatchDraw();
Sleep( 100 ); / / 延时 0.1 秒
cleardevice(); / / 清空屏幕
}
EndBatchDraw();
closegraph();
return 0 ;
}
|
效果图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/flx413/article/details/52014008