编辑
坚信大伙儿看了许多的有关电子计算机 *** 黑客、黑客、人工智能技术、AI层面的影片,每每黑客攻击某一五角大楼,某一网址时,都是会出現那样一幅界面:
编辑
编辑
O(∩_∩)O和这并沒有很大的关联,今日我们要讲的是《数字雨》!
好啦,大家看来下什么叫数字雨:
编辑
数字雨,说白了,便是类似填入雨天一样,掉下来数据或是是文本。以下动态图片:
编辑
那样看上去是否觉得大家好像进入了一个科幻片的虚幻世界呢?当然程序执行后会出现有一个小小意外惊喜哦?
#include
#include
#include
#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( *** _CXSCREEN), GetSystemMetrics( *** _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---写插口---ctrl c/ctrl v
CharList * 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( *** _CXSCREEN);
cyScreen=GetSystemMetrics( *** _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));//全自动复位为o
for (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(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*iFontHeight>cyScreen)
{
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语言】
吃外卖的情况下食材送至非常容易转冷。一般快餐盒都不可以立即用以微波炉,那样会造成 有害物进到到人体。实际上有的原材料是能够加温的。支付宝钱包小蚂蚁庄园小课堂今日难题:哪一种塑胶外卖送餐餐盒能够放入微波...
md5 = hashlib.md5() $handle = fopen($filename, "r");经过运用app的运用,发现后台规划存在两个问题:cpe:/a:cisco:adaptive_se...
本文导读目录: 1、黑客帝国有几部 2、黑客帝国里有没有李连杰 3、李连杰演过哪些电影 4、李连杰在好莱坞演过多少电影 5、李连杰主演的电影有哪些 6、黑客帝国共有几部 7、李...
就是来自日本啊。1973年:FamilyMart第一家实验店开设于埼玉县狭山市水野。1978年:于千叶县船桥市开设第一家特许加盟店-大阁三山店,也是FamilyMart。 24小时制介绍:一、全家Fa...
本文导读目录: 1、推荐几部好看的关于黑客的小说 2、男主是顶级黑客在未来判刑穿越现代的小说 3、重生黑客的小说 4、穿越类的黑客小说 5、谁介绍几本有关黑客的小说! 6、介绍几本...
百度搜索集团旗下有啊(www.youa.com)日前上线中国第一个消费水平分享平台,并开启全新升级知名品牌和网站域名 “爱乐活”(www.leho.com)。有啊CEO蔡虎表露,“爱乐活”定坐落于...