编辑
坚信大伙儿看了许多的有关电子计算机 *** 黑客、黑客、人工智能技术、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语言】
本文介绍Check Point研究人员在Google Play中发现的一同广告歹意软件进犯活动。 Check Point研究人员近期在Google Play运用商铺中发现一同新的广告歹意软件进犯活动。...
被骗了找黑客相关问题 黑客教你微信号查询某人信息相关问题 黑客怎么使用搜索引擎 黑客最常用的电脑是什么电脑(电脑编程入门自学黑客)...
本文导读目录: 1、手机屏幕怎么成黑白的了 2、手机屏幕变成黑白色怎么办? 3、手机全部变成黑白色了怎么办? 4、华为手机怎么突然变成黑白怎么恢复 5、手机屏幕变成黑白屏怎么办?...
自从carry_your 上次技术反制逼小偷还回 iPhone 后,很多雷锋网和宅客频道的读者反馈,希望有人帮他们拿回被偷的手机。 但是,这件事情很难,为什么难?我们先看一个悲伤的故事。...
不知道CBer有多少会RAP的?国外的一些程序员用网站聊天程序进行了一场RAP对决,看完了你就知道:"程序员会RAP,谁也挡不住!" we ain't here to do e-c-e we'...
随着智能手机的不断普及,以及兼容性及性能的不断提高,越来越多的手机用户更喜欢利用电脑来管理手机。可是在利用电脑对手机进行操作过程中,也出现了许多问题。常见的问题就是手机无法正常连接电脑。对此小编给大家...