作者:zhengxing | 来源:互联网 | 2023-09-25 09:10
目录一、项目描述和最终的效果展示二、静态的代码雨三、一场动态的代码雨四、实现代码雨动画一、项目描述和最终的效果展示项目:让字符从上到下依次的下落,呈现出代码雨。最终
目录
- 一、项目描述和最终的效果展示
- 二、静态的代码雨
- 三、一场动态的代码雨
- 四、实现代码雨动画
一、项目描述和最终的效果展示
项目: 让字符从上到下依次的下落,呈现出代码雨。
最终效果图如下所示:
二、静态的代码雨
代码如下:
#include
#include
#include#define High 800
#define Width 1000
#define CharSize 25int main(void)
{int highNum&#61;High/CharSize;int widthNum&#61;Width/CharSize;int CharRain[Width/CharSize][High/CharSize];int CNum[Width/CharSize];int i,j,x,y;srand((unsigned)time(NULL));for(i&#61;0;i<widthNum;i&#43;&#43;){CNum[i]&#61;(rand()%(highNum*9/10))&#43;highNum/10;for(j&#61;0;j<CNum[i];j&#43;&#43;)CharRain[j][i]&#61;(rand()%26)&#43;65;}initgraph(Width,High);BeginBatchDraw();setfont(25,10,"Courier");setcolor(GREEN);for(i&#61;0;i<widthNum;i&#43;&#43;){x&#61;i*CharSize;for(j&#61;0;j<CNum[i];j&#43;&#43;){y&#61;j*CharSize;outtextxy(x,y,CharRain[j][i]);}}FlushBatchDraw();EndBatchDraw();getch();closegraph();return 0;
}
效果图如下:
三、一场动态的代码雨
代码如下:
#include
#include
#include#define High 800
#define Width 1000
#define CharSize 25int main(void)
{int highNum&#61;High/CharSize;int widthNum&#61;Width/CharSize;int CharRain[Width/CharSize][High/CharSize];int CNum[Width/CharSize];int i,j,x,y;srand((unsigned)time(NULL));for(i&#61;0;i<widthNum;i&#43;&#43;){CNum[i]&#61;(rand()%(highNum*9/10))&#43;highNum/10;for(j&#61;0;j<CNum[i];j&#43;&#43;)CharRain[j][i]&#61;(rand()%26)&#43;65;}initgraph(Width,High);BeginBatchDraw();setfont(25,10,"Courier");setcolor(RGB(0,255,0));while(1){for(i&#61;0;i<widthNum;i&#43;&#43;){if(CNum[i]<highNum-1){for(j&#61;CNum[i]-1;j>&#61;0;j--){CharRain[j&#43;1][i]&#61;CharRain[j][i];}CharRain[0][i]&#61;(rand()%26)&#43;65;CNum[i]&#61;CNum[i]&#43;1;}}for(i&#61;0;i<widthNum;i&#43;&#43;){x&#61;i*CharSize;for(j&#61;0;j<CNum[i];j&#43;&#43;){y&#61;j*CharSize;outtextxy(x,y,CharRain[j][i]);}}FlushBatchDraw();Sleep(200);clearrectangle(0,0,Width-1,High-1);}EndBatchDraw();getch();closegraph();return 0;
}
效果图如下:
四、实现代码雨动画
代码如下:
#include
#include
#include#define High 800
#define Width 1000
#define CharSize 25int main(void)
{int highNum&#61;High/CharSize;int widthNum&#61;Width/CharSize;int CharRain[Width/CharSize][High/CharSize];int CNum[Width/CharSize];int ColorG[Width/CharSize];int i,j,x,y;srand((unsigned)time(NULL));for(i&#61;0;i<widthNum;i&#43;&#43;){CNum[i]&#61;(rand()%(highNum*9/10))&#43;highNum/10;ColorG[i]&#61;255;for(j&#61;0;j<CNum[i];j&#43;&#43;)CharRain[j][i]&#61;(rand()%26)&#43;65;}initgraph(Width,High);BeginBatchDraw();setfont(25,10,"Courier");while(1){for(i&#61;0;i<widthNum;i&#43;&#43;){if(CNum[i]<highNum-1){for(j&#61;CNum[i]-1;j>&#61;0;j--){CharRain[j&#43;1][i]&#61;CharRain[j][i];}CharRain[0][i]&#61;(rand()%26)&#43;65;CNum[i]&#61;CNum[i]&#43;1;}else{if(ColorG[i]>40)ColorG[i]&#61;ColorG[i]-20;else{CNum[i]&#61;(rand()%(highNum/3))&#43;highNum/10;ColorG[i]&#61;(rand()%75)&#43;180;for(j&#61;0;j<CNum[i];j&#43;&#43;){CharRain[j][i]&#61;(rand()%26)&#43;65;}}}}for(i&#61;0;i<widthNum;i&#43;&#43;){x&#61;i*CharSize;for(j&#61;0;j<CNum[i];j&#43;&#43;){y&#61;j*CharSize;setcolor(RGB(0,ColorG[i],0));outtextxy(x,y,CharRain[j][i]);}}FlushBatchDraw();Sleep(100);clearrectangle(0,0,Width-1,High-1);}EndBatchDraw();getch();closegraph();return 0;
}
效果图如下: