生活随笔
收集整理的這篇文章主要介紹了
C++实现代码雨
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
各位博友們,大家好,今天給大家打一個代碼雨
接下來是代碼
#include
<stdio
.h
>
#include
<time
.h
>
#include
<Windows
.h
>
#include
<graphics
.h
>#define
WIDTH 960
#define
HEIGHT 640
#define
STR_SIZE 20
#define
STR_NUM 128
#define
STR_WIDTH 15typedef struct Rain
{int x
;int y
;int speed
;TCHAR str
[STR_SIZE];
}Rain
;
Rain rain
[STR_NUM];
char
CreateCh()
{char ch
= 0;int flag
= rand() % 3; if (flag
== 0)ch
= rand() % 26 + 'a'; else if (flag
== 1)ch
= rand() % 26 + 'A'; elsech
= rand() % 10 + '0'; return ch
;
}
void InitRain()
{for (int i
= 0; i
< STR_NUM; ++i
){rain
[i
].x
= i
*STR_WIDTH;rain
[i
].y
= rand() % HEIGHT;rain
[i
].speed
= rand() % 5 + 5;}for (int i
= 0; i
< STR_NUM; i
++){for (int j
= 0; j
< STR_SIZE; j
++){rain
[i
].str
[j
] = CreateCh();}}
}
void DrawRain()
{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-j
*13, 0));}}
}
void MoveRain()
{for (int i
= 0; i
< STR_NUM; i
++){rain
[i
].y
+= rain
[i
].speed
;if (rain
[i
].y
- STR_WIDTH*STR_SIZE > HEIGHT){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()
{srand((unsigned int
)time(NULL)); initgraph(WIDTH, HEIGHT);InitRain();DWORD t1
, t2
;t1
= GetTickCount();t2
= t1
;while (1){BeginBatchDraw(); DrawRain();ChangeCh();if (t2
- t1
> 20){MoveRain();t1
= t2
;}t2
= GetTickCount();EndBatchDraw();}getchar();closegraph();return 0;
}
下面是效果圖
好了,今天就分享到這里,再見!
總結
以上是生活随笔為你收集整理的C++实现代码雨的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。