C語言實現代碼雨效果
本文實例為大傢分享瞭C語言實現代碼雨效果的具體代碼,供大傢參考,具體內容如下
一、項目描述和最終的效果展示
項目: 讓字符從上到下依次的下落,呈現出代碼雨。
最終效果圖如下所示:
二、靜態的代碼雨
代碼如下:
#include<graphics.h> #include<time.h> #include<conio.h> #define High 800//遊戲畫面 #define Width 1000 #define CharSize 25//每個字符顯示的大小 int main(void) { int highNum=High/CharSize; int widthNum=Width/CharSize; //CharRain存儲對應字符矩陣中需要輸出字符的ASCII碼 int CharRain[Width/CharSize][High/CharSize]; int CNum[Width/CharSize];//每一列的有效字符個數 int i,j,x,y; srand((unsigned)time(NULL));//設置隨機函數種子 for(i=0;i<widthNum;i++)//初始化字符矩陣 { CNum[i]=(rand()%(highNum*9/10))+highNum/10;//這一列的有效字符個數 for(j=0;j<CNum[i];j++) CharRain[j][i]=(rand()%26)+65;//產生A~Z的隨機字符 } initgraph(Width,High); BeginBatchDraw(); setfont(25,10,"Courier");//設置字體 setcolor(GREEN); for(i=0;i<widthNum;i++)//輸出整個字符矩陣 { x=i*CharSize;//當前字符的x坐標 for(j=0;j<CNum[i];j++) { y=j*CharSize;//當前字符的y坐標 outtextxy(x,y,CharRain[j][i]);//輸出當前字符 } } FlushBatchDraw(); EndBatchDraw(); getch(); closegraph(); return 0; }
效果圖如下:
三、一場動態的代碼雨
代碼如下:
#include<graphics.h> #include<time.h> #include<conio.h> #define High 800//遊戲畫面 #define Width 1000 #define CharSize 25//每個字符顯示的大小 int main(void) { int highNum=High/CharSize; int widthNum=Width/CharSize; //CharRain存儲對應字符矩陣中需要輸出字符的ASCII碼 int CharRain[Width/CharSize][High/CharSize]; int CNum[Width/CharSize];//每一列的有效字符個數 int i,j,x,y; srand((unsigned)time(NULL));//設置隨機函數種子 for(i=0;i<widthNum;i++)//初始化字符矩陣 { CNum[i]=(rand()%(highNum*9/10))+highNum/10;//這一列的有效字符個數 for(j=0;j<CNum[i];j++) CharRain[j][i]=(rand()%26)+65;//產生A~Z的隨機字符 } initgraph(Width,High); BeginBatchDraw(); setfont(25,10,"Courier");//設置字體 setcolor(RGB(0,255,0)); while(1) { for(i=0;i<widthNum;i++) { if(CNum[i]<highNum-1)//當這一列字符沒有填滿時 { for(j=CNum[i]-1;j>=0;j--)//每個字符向下移動一格 { CharRain[j+1][i]=CharRain[j][i]; } CharRain[0][i]=(rand()%26)+65;//最上一格再重新隨機的產生一個字符 CNum[i]=CNum[i]+1;//這一列的字符數加1 } } for(i=0;i<widthNum;i++)//輸出整個字符矩陣 { x=i*CharSize;//當前字符的x坐標 for(j=0;j<CNum[i];j++) { y=j*CharSize;//當前字符的y坐標 outtextxy(x,y,CharRain[j][i]);//輸出當前字符 } } FlushBatchDraw(); Sleep(200); clearrectangle(0,0,Width-1,High-1);//清空畫面 } EndBatchDraw(); getch(); closegraph(); return 0; }
效果圖如下:
四、實現代碼雨動畫
代碼如下:
#include<graphics.h> #include<time.h> #include<conio.h> #define High 800//遊戲畫面 #define Width 1000 #define CharSize 25//每個字符顯示的大小 int main(void) { int highNum=High/CharSize; int widthNum=Width/CharSize; //CharRain存儲對應字符矩陣中需要輸出字符的ASCII碼 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=0;i<widthNum;i++)//初始化字符矩陣 { CNum[i]=(rand()%(highNum*9/10))+highNum/10;//這一列的有效字符個數 ColorG[i]=255; for(j=0;j<CNum[i];j++) CharRain[j][i]=(rand()%26)+65;//產生A~Z的隨機字符 } initgraph(Width,High); BeginBatchDraw(); setfont(25,10,"Courier");//設置字體 while(1) { for(i=0;i<widthNum;i++) { if(CNum[i]<highNum-1)//當這一列字符沒有填滿時 { for(j=CNum[i]-1;j>=0;j--)//每個字符向下移動一格 { CharRain[j+1][i]=CharRain[j][i]; } CharRain[0][i]=(rand()%26)+65;//最上一格再重新隨機的產生一個字符 CNum[i]=CNum[i]+1;//這一列的字符數加1 } else { if(ColorG[i]>40) ColorG[i]=ColorG[i]-20;//讓滿的這一列逐漸變暗 else { CNum[i]=(rand()%(highNum/3))+highNum/10;//這一列字符的個數 ColorG[i]=(rand()%75)+180;//這一列字符的顏色 for(j=0;j<CNum[i];j++)//重新初始化這一列字符 { CharRain[j][i]=(rand()%26)+65; } } } } for(i=0;i<widthNum;i++)//輸出整個字符矩陣 { x=i*CharSize;//當前字符的x坐標 for(j=0;j<CNum[i];j++) { y=j*CharSize;//當前字符的y坐標 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; }
效果圖如下:
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持LevelAH。