尚云网站建设,网站登陆模板,上海 培训网站建设,查询网站建立时间编辑相信大家看过许许多多的关于计算机黑客、骇客、人工智能、AI方面的电影#xff0c;每当黑客入侵某个五角大楼#xff0c;某个网站时#xff0c;都会出现这样一幅画面#xff1a;编辑然后就轻而易举的成功入侵夺取管理员权限了#xff0c;这时候的我们#xff0c;心情… 编辑 相信大家看过许许多多的关于计算机黑客、骇客、人工智能、AI方面的电影每当黑客入侵某个五角大楼某个网站时都会出现这样一幅画面编辑 然后就轻而易举的成功入侵夺取管理员权限了这时候的我们心情肯定是激动的无以复加心里大喊着666如果我有这么厉害的技术就好了所以大家想到今天要说的是什么了吗编辑 O(∩_∩)O和这并没有太大的关系今天我们要讲的是《数字雨》好了我们来看下什么是数字雨编辑 数字雨顾名思义就是类似于填上下雨一样往下掉数字或者是文字。如下动态图编辑 这样看起来是不是感觉我们像是进入了一个科幻的虚拟世界呢当然了程序运行后会有有个小小的惊喜哦#include Windows.h#include time.h#include mmsystem.h#pragma comment(lib, WINMM.LIB)#define NumOfColumn 25 //显示列的列数typedef struct charList{struct charList * prev;TCHAR ch; //放字符struct charList * next;}CharList;typedef struct tagCharColumn{struct charList * head, *cur;int x, y, iShownLen, iStrNum; //显示字数字符数}CharQueue;struct showChar{TCHAR myChar[60];int iNum; //字符个数}charArr[7] {//《一颗开花的树》-席慕容{ TEXT(如何让你遇见我在我最美丽的时刻),16 },{ TEXT(为这我已在佛前求了五百年求他让我们结一段尘缘),24 },{ TEXT(佛于是把我化作一棵树长在你必经的路旁),19 },{ TEXT(阳光下慎重地开满了花朵朵都是我前世的盼望),21 },{ TEXT(当你走进请你细听那颤抖的叶是我等待的热情),21 },{ TEXT(而当你终于无视地走过在你身后落了一地的), 20 },{ TEXT(朋友啊那不是花瓣是我凋零的心),16 }};LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){TCHAR szClassName[] TEXT(数字雨);HWND hwnd;MSG msg;WNDCLASS wndclass;wndclass.style CS_HREDRAW | CS_VREDRAW;wndclass.lpfnWndProc WndProc;wndclass.cbClsExtra 0;wndclass.cbWndExtra 0;wndclass.hInstance hInstance;wndclass.hIcon NULL;wndclass.hCursor NULL;wndclass.hbrBackground (HBRUSH)GetStockObject(WHITE_BRUSH);wndclass.lpszMenuName NULL;wndclass.lpszClassName szClassName;if (!RegisterClass(wndclass)){return 0;}hwnd CreateWindow(szClassName, NULL, WS_DLGFRAME | WS_THICKFRAME | WS_POPUP, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), NULL, NULL, hInstance, NULL);ShowWindow(hwnd, SW_SHOWMAXIMIZED);UpdateWindow(hwnd);ShowCursor(FALSE);srand(time(0));//消息机制while (GetMessage(msg, NULL, 0, 0)){TranslateMessage(msg);DispatchMessage(msg);}ShowCursor(TRUE);return msg.wParam;}void CreateQueue(CharQueue * cc, int cyScreen, int x){//bug -- 调用API---写接口---ctrlc/ctrlvCharList * front;int NumTemp rand() % 6;cc-x x;cc-y rand() % 10 ? rand() % cyScreen : 0; //大约9/10的概率从中间开始下落。cc-iShownLen 1; //一开始就显示一个字符然后慢慢增加增加到等于歌词字符数时保持不变cc-iStrNum charArr[NumTemp].iNum; //歌词字符数cc-head cc-cur front (CharList *)calloc(cc-iStrNum, sizeof(CharList)); //创建显示列//生成每个节点int i;for (i 0; iiStrNum - 1; i){cc-cur-prev front;cc-cur-ch charArr[NumTemp].myChar[i];front cc-cur;front-next cc-cur;}//最后一个是标点符号cc-cur-prev front;cc-cur-ch charArr[NumTemp].myChar[i];cc-cur-next cc-head;cc-head-prev cc-cur;cc-cur cc-head;}LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){HDC hdc;static HDC hdcMem;static HBITMAP hBitmap;static CharQueue * AllChar;HFONT hFont;static int cxScreen, cyScreen;static int iFontWidth 20, iFontHeight 20;int i, j, y, greenToblack;CharQueue * ccElem;CharList * temp;switch (message){case WM_CREATE:cxScreen GetSystemMetrics(SM_CXSCREEN);cyScreen GetSystemMetrics(SM_CYSCREEN);SetTimer(hwnd, 1, 70, NULL);hdc GetDC(hwnd);hdcMem CreateCompatibleDC(hdc);hBitmap CreateCompatibleBitmap(hdc, cxScreen, cyScreen);SelectObject(hdcMem, hBitmap);ReleaseDC(hwnd, hdc);hFont CreateFont(iFontHeight, iFontWidth, 0/*角度设置*/, 0/*角度设置*/, FW_BOLD/*黑体*/, 0, 0, 0,/*斜体 下划线 啊、删除线*/DEFAULT_CHARSET/*字符集*/, OUT_DEFAULT_PRECIS/*指定输出精度*/, CLIP_DEFAULT_PRECIS/*指定裁剪精度*/,DRAFT_QUALITY/*指向输出质量*/, FIXED_PITCH | FF_SWISS/*指定字体间距| 字体族*/, TEXT(宋体));SelectObject(hdcMem, hFont);DeleteObject(hFont);SetBkMode(hdcMem, TRANSPARENT);PlaySound(L素材.wav, NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);//异步循环播放AllChar (CharQueue *)calloc(NumOfColumn, sizeof(CharQueue));//自动初始化为ofor (i 0; i{CreateQueue(AllChar i, cyScreen, 50 * i 20);}return 0;case WM_TIMER://该函数使用当前选入指定设备环境中的刷子绘制给定的矩形区域。通过使用给出的光栅操作来对该刷子的颜色和表面颜色进行组合。PatBlt(hdcMem, 0, 0, cxScreen, cyScreen, BLACKNESS);for (i 0; i{ccElem AllChar i;temp ccElem-head;SetTextColor(hdcMem, RGB(255, 255, 255));TextOut(hdcMem, ccElem-x, ccElem-y, temp-ch, 1/*字符个数*/);y ccElem-y;greenToblack 0;ccElem-head ccElem-head-next;temp temp-prev;for (j 1; jiShownLen; j){SetTextColor(hdcMem, RGB(/*greenToblack*5%255*/0, 255 - 255 * (greenToblack) / (ccElem-iStrNum), 0));TextOut(hdcMem, ccElem-x, y - iFontHeight, temp-ch, 1);temp temp-prev;}if (ccElem-iShownLeniStrNum){ccElem-iShownLen;}ccElem-y iFontHeight;if (ccElem-y - ccElem-iStrNum*iFontHeightcyScreen){free(ccElem-cur);CreateQueue(ccElem, cyScreen, 128 * i 17);}}hdc GetDC(hwnd);BitBlt(hdc, 0, 0, cxScreen, cyScreen, hdcMem, 0, 0, SRCCOPY);ReleaseDC(hwnd, hdc);return 0;case WM_RBUTTONDOWN:KillTimer(hwnd, 1);return 0;case WM_RBUTTONUP:SetTimer(hwnd, 1, 70, NULL);return 0;//case WM_LBUTTONDOWN:case WM_KEYDOWN:case WM_DESTROY:KillTimer(hwnd, 1);for (i 0; i{ccElem AllChar i;free(ccElem-cur);}free(AllChar);DeleteObject(hBitmap);DeleteDC(hdcMem);PostQuitMessage(0);break;}return DefWindowProc(hwnd, message, wParam, lParam);} 看完了今天的效果图和代码细心的大家是不是发现了什么没错编辑 这回不忽悠大家了代码中引用的诗歌貌似是一首关于情感方面的的现代诗当然了这个程序你用到什么方面就不管我的事情了正好里面也会调用音乐氛围也不错一打开就是满满的惊喜。今天的程序就到这里了喜欢的小伙伴多多转发关注哦同时也可以关注我们的公众号【轻松学C语言】