日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++实现数字雨

發布時間:2023/12/31 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++实现数字雨 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://blog.csdn.net/qq_36238595/article/details/56682261感謝這篇文章的作者,我是在這個程序基礎上修改的。新的程序可以適應窗口變化。

思路:通過Windows API函數,拿到控制臺的句柄,并通過設置光標位置在不同位置顯示數字。

用一個結構體數組記錄每個雨滴的位置和顯示的值。將雨滴位置上方若干位置的雨滴設置為空來擦出雨滴。在雨滴上方連續若干個位置線索雨滴形成數字線。

最下方的雨滴高亮。每次向下移動一個位置,同時設置最下方以及倒數第二個雨滴,這樣將上一次高亮的雨滴取消高亮。

雨滴到達屏幕下方后,重新生成雨滴的現實位置。

#include <time.h> #include <Windows.h>typedef struct //記錄雨滴的結構體 {int x, y;char ch; }RAINDROP;const int BUFFER_SIZE = 100; int WIDTH = 80; int HEIGHT = 30; const int RAIN_LENGTH = 18;RAINDROP raindropLine[BUFFER_SIZE]; HANDLE HOUT = GetStdHandle(STD_OUTPUT_HANDLE);//獲得標準輸出的句柄void gotoxy(int x, int y) {COORD pos; //定義表示一個字符在控制臺屏幕上的坐標的對象pos.X = x;pos.Y = y;SetConsoleCursorPosition(HOUT, pos); //設置控制臺標準輸出光標位置 }void show_cursor(BOOL hide) {CONSOLE_CURSOR_INFO cciCursor;if (GetConsoleCursorInfo(HOUT, &cciCursor)) //獲得光標信息{cciCursor.bVisible = hide; //隱藏光標SetConsoleCursorInfo(HOUT, &cciCursor); //重新設置光標} }void set_color(int color) {SetConsoleTextAttribute(HOUT, color); //設置輸出顏色 }int main() {CONSOLE_SCREEN_BUFFER_INFO info;GetConsoleScreenBufferInfo(HOUT, &info); //獲得控制臺窗體信息HEIGHT = info.srWindow.Bottom; //根據控制臺的寬高設置顯示的寬高WIDTH = info.srWindow.Right;show_cursor(FALSE);srand((unsigned int)time(NULL));for (int i=0; i<BUFFER_SIZE; i++) //隨機設置雨滴下落的位置{raindropLine[i].x = rand()%WIDTH;raindropLine[i].y = rand()%HEIGHT;raindropLine[i].ch = rand() %2 + 48; //設置雨滴內容0或1}while(true) {GetConsoleScreenBufferInfo(HOUT, &info); //當窗體大小變化時,重新設置寬高信息HEIGHT = info.srWindow.Bottom;WIDTH = info.srWindow.Right;for (int i=0; i<BUFFER_SIZE; ++i){if (raindropLine[i].y <= HEIGHT){gotoxy(raindropLine[i].x, raindropLine[i].y);set_color(FOREGROUND_GREEN); //設置雨滴顏色putchar(raindropLine[i].ch);}gotoxy(raindropLine[i].x, raindropLine[i].y - RAIN_LENGTH); //擦除過長的雨滴putchar(' ');raindropLine[i].y++;raindropLine[i].ch = rand() % 2 + 48;if (raindropLine[i].y > HEIGHT + RAIN_LENGTH) {raindropLine[i].x = rand() % WIDTH;raindropLine[i].y = rand() % HEIGHT;}if ( raindropLine[i].y <= HEIGHT){gotoxy(raindropLine[i].x, raindropLine[i].y);set_color(FOREGROUND_GREEN|FOREGROUND_INTENSITY); //高亮最下方的雨滴putchar(raindropLine[i].ch);}}Sleep(50);}getchar();return 0; }

效果圖

總結

以上是生活随笔為你收集整理的C++实现数字雨的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。