当前位置:首页 > 黑客教程 > 正文内容

黑客帝国数字雨制作代码(黑客帝国数字雨)

hacker3年前 (2022-07-18)黑客教程101

本文目录一览:

可不可以教我黑客帝国数字雨的制作

#include windows.h

#define ID_TIMER 1

#define STRMAXLEN 25 //一个显示列的最大长度

#define STRMINLEN 8 //一个显示列的最小长度

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

//////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////

typedef struct tagCharChain //整个当作屏幕的一个显示列,这是个双向列表

{

struct tagCharChain *prev; //链表的前个元素

TCHAR ch; //一个显示列中的一个字符

struct tagCharChain *next; //链表的后个元素

}CharChain, *pCharChain;

typedef struct tagCharColumn

{

CharChain *head, *current, *point;

int x, y, iStrLen; //显示列的开始显示的x,y坐标,iStrLen是这个列的长度

int iStopTimes, iMustStopTimes; //已经停滞的次数和必须停滞的次数,必须停滞的次数是随机的

}CharColumn, *pCharColumn;

int main(HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

static TCHAR szAppName[] = TEXT ("matrix") ;

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 = LoadIcon (NULL, IDI_APPLICATION) ;

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;

wndclass.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH) ;

wndclass.lpszMenuName = NULL ;

wndclass.lpszClassName = szAppName ;

if(!RegisterClass (wndclass))

{

MessageBox (NULL, TEXT ("此程序必须运行在NT下!"), szAppName, MB_ICONERROR) ;

return 0;

}

hwnd = CreateWindow (szAppName, 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 ((int) GetCurrentTime ()) ; //初始化随机数发生器

while (GetMessage (msg, NULL, 0, 0))

{

TranslateMessage (msg) ;

DispatchMessage (msg) ;

}

ShowCursor(TRUE); //显示鼠标光标

return msg.wParam ;

}

TCHAR randomChar() //随机字符产生函数

{

return (TCHAR)(rand()%(126-33)+33); //33到126之间

}

int init(CharColumn *cc, int cyScreen, int x) //初始化

{

int j;

cc-iStrLen = rand()%(STRMAXLEN-STRMINLEN) + STRMINLEN; //显示列的长度

cc-x = x+3 ; //显示列的开始显示的x坐标

cc-y =rand()%3?rand()%cyScreen:0; //显示列的开始显示的y坐标

cc-iMustStopTimes = rand()%6 ;

cc-iStopTimes = 0 ;

cc-head = cc-current =

(pCharChain)calloc(cc-iStrLen, sizeof(CharChain)); //生成显示列

for(j=0; jcc-iStrLen-1; j++)

{

cc-current-prev = cc-point; //cc-point一个显示列的前个元素

cc-current-ch = '\0';

cc-current-next = cc-current+1; //cc-current+1一个显示列的后个元素

cc-point = cc-current++; //cc-point = cc-current; cc-current++;

}

cc-current-prev = cc-point; //最后一个节点

cc-current-ch = '\0';

cc-current-next = cc-head;

cc-head-prev = cc-current; //头节点的前一个为此链的最后一个元素

cc-current = cc-point = cc-head; //free掉申请的内存要用current当参数

cc-head-ch = randomChar(); // 对链表头的 元素填充

return 0;

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

HDC hdc ;

//ctn 用来确定一个显示链是否 向下前进,如果等待次数超过必须等待的次数,ctn就代表要向下前进

int i, j, temp, ctn; //j为一个显示链中除链表头外的在屏幕上显示的y坐标,temp绿色过度到黑色之用

static HDC hdcMem;

HFONT hFont;

static HBITMAP hBitmap;

static int cxScreen, cyScreen; //屏幕的宽度 高度.

static int iFontWidth=10, iFontHeight=15, iColumnCount; //字体的宽度 高度, 列数

static CharColumn *ccChain;

switch (message)

{

case WM_CREATE:

cxScreen = GetSystemMetrics(SM_CXSCREEN) ; //屏幕宽度

cyScreen = GetSystemMetrics(SM_CYSCREEN) ;

SetTimer (hwnd, ID_TIMER, 10, NULL) ;

hdc = GetDC(hwnd);

hdcMem = CreateCompatibleDC(hdc);

hBitmap = CreateCompatibleBitmap(hdc, cxScreen, cyScreen);

SelectObject(hdcMem, hBitmap);

ReleaseDC(hwnd, hdc);

//创建字体

hFont = CreateFont(iFontHeight, iFontWidth-5, 0, 0, FW_BOLD, 0, 0, 0,

DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,

DRAFT_QUALITY, FIXED_PITCH | FF_SWISS, TEXT("Fixedsys"));

SelectObject(hdcMem, hFont);

DeleteObject (hFont) ;

SetBkMode(hdcMem, TRANSPARENT); //设置背景模式为 透明

iColumnCount = cxScreen/(iFontWidth*3/2); //屏幕所显示字母雨的列数

ccChain = (pCharColumn)calloc(iColumnCount, sizeof(CharColumn));

for(i=0; iiColumnCount; i++)

{

init(ccChain+i, cyScreen, (iFontWidth*3/2)*i);

}

return 0 ;

case WM_TIMER:

hdc = GetDC(hwnd);

PatBlt (hdcMem, 0, 0, cxScreen, cyScreen, BLACKNESS) ; //将内存设备映像刷成黑色

for(i=0; iiColumnCount; i++)

{

ctn = (ccChain+i)-iStopTimes++ (ccChain+i)-iMustStopTimes;

//

(ccChain+i)-point = (ccChain+i)-head; //point用于遍历整个显示列

//第一个字符显示为 白色

SetTextColor(hdcMem, RGB(255, 255, 255));

TextOut(hdcMem, (ccChain+i)-x, (ccChain+i)-y, ((ccChain+i)-point-ch), 1);

j = (ccChain+i)-y;

(ccChain+i)-point = (ccChain+i)-point-next;

//遍历整个显示列,将这个显示列里的字符从下往上显示

temp = 0 ; //temp绿色过度到黑色之用

while((ccChain+i)-point != (ccChain+i)-head (ccChain+i)-point-ch)

{

SetTextColor(hdcMem, RGB(0, 255-(255*(temp++)/(ccChain+i)-iStrLen), 0));

TextOut(hdcMem, (ccChain+i)-x, j-=iFontHeight, ((ccChain+i)-point-ch), 1);

(ccChain+i)-point = (ccChain+i)-point-next;

}

if(ctn)

(ccChain+i)-iStopTimes = 0 ;

else continue;

(ccChain+i)-y += iFontHeight; //下次开始显示的y坐标 为当前的y坐标加上 一个字符的高度

//如果开始显示的y坐标减去 整个显示列的长度超过了屏幕的高度

if( (ccChain+i)-y-(ccChain+i)-iStrLen*iFontHeight cyScreen)

{

free( (ccChain+i)-current );

init(ccChain+i, cyScreen, (iFontWidth*3/2)*i);

}

//链表的头 为此链表的前个元素,因为下次开始显示的时候 就相当与在整个显示列的开头添加个元素,然后在开始往上显示

(ccChain+i)-head = (ccChain+i)-head-prev;

(ccChain+i)-head-ch = randomChar();

}

BitBlt(hdc, 0, 0, cxScreen, cyScreen, hdcMem, 0, 0, SRCCOPY);

ReleaseDC(hwnd, hdc);

return 0;

case WM_RBUTTONDOWN:

KillTimer (hwnd, ID_TIMER) ;

return 0;

case WM_RBUTTONUP:

SetTimer (hwnd, ID_TIMER, 10, NULL) ;

return 0;

//处理善后工作

case WM_KEYDOWN:

case WM_LBUTTONDOWN:

case WM_DESTROY:

KillTimer (hwnd, ID_TIMER) ;

DeleteObject(hBitmap);

DeleteDC(hdcMem);

for(i=0; iiColumnCount; i++)

{

free( (ccChain+i)-current );

}

free(ccChain);

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam) ;

}

VC++中运行

我要黑客帝国里的数字流星雨代码,用html或asp写的

htmlstyle type="text/css"

!--

body {

background-color: #000000;

}

--

/style

Body

script language="JavaScript"

!--

if (document.all){

Cols=60;

Cl=20;//Space's are included so real length is 48!

Cs=20;

Ts=20;

Tc='#008800';

Tc1='#00ff00';

MnS=20;

MxS=30;

I=Cs;

Sp=new Array();S=new Array();Y=new Array();

C=new Array();M=new Array();B=new Array();

RC=new Array();E=new Array();Tcc=new Array(0,1);

document.write(" div id='Container' style='position:absolute;top:0;left:-"+Cs+"'");

document.write(" div style='position:relative'");

for(i=0; i Cols; i++){

S[i]=I+=Cs;

document.write(" div id='A' style='position:absolute;top:0;font-family:Arial;font-size:"

+Ts+"px;left:"+S[i]+";width:"+Ts+"px;height:0px;color:"+Tc+";visibility:hidden' /div");

}

document.write(" /div /div");

for(j=0; j Cols; j++){

RC[j]=1+Math.round(Math.random()*Cl);

Y[j]=0;

Sp[j]=Math.round(MnS+Math.random()*MxS);

for(i=0; i RC[j]; i++){

B[i]='';

C[i]=Math.round(Math.random()*1)+' ';

M[j]=B[0]+=C[i];

}

}

function Cycle(){

Container.style.top=window.document.body.scrollTop;

for (i=0; i Cols; i++){

var r = Math.floor(Math.random()*Tcc.length);

E[i] = ' font color='+Tc1+''+Tcc[r]+' /font';

Y[i]+=Sp[i];

if (Y[i] window.document.body.clientHeight){

for(i2=0; i2 Cols; i2++){

RC[i2]=1+Math.round(Math.random()*Cl);

for(i3=0; i3 RC[i2]; i3++){

B[i3]='';

C[i3]=Math.round(Math.random()*1)+' ';

C[Math.floor(Math.random()*i2)]=' '+' ';

M[i]=B[0]+=C[i3];

Y[i]=-Ts*M[i].length/1.5;

A[i].style.visibility='visible';

}

Sp[i]=Math.round(MnS+Math.random()*MxS);

}

}

A[i].style.top=Y[i];

A[i].innerHTML=M[i]+' '+E[i]+' ';

}

setTimeout('Cycle()',20)

}

Cycle();

}

// --

/script

/body

/html

演示地址:

网上找的代码,我给你改了下

如何实现c语言程序各颜色数字雨代码

#includestdio.h

#includetime.h

#includewindows.h

typedef struct

{

int x,y;

char ch;

}STU;

STU st[100];

//出现位置 

void gotoxy(int x, int y)

{

  HANDLE hout;

  COORD pos;

  pos.X = x;

  pos.Y = y;

  hout = GetStdHandle(STD_OUTPUT_HANDLE);

  SetConsoleCursorPosition(hout, pos);

}

/*隐藏光标*/

void show_cursor(int hide)

{

  CONSOLE_CURSOR_INFO cciCursor;

  HANDLE hout;

  hout = GetStdHandle(STD_OUTPUT_HANDLE);

  if(GetConsoleCursorInfo(hout, cciCursor))

  {

      cciCursor.bVisible = hide;

      SetConsoleCursorInfo(hout, cciCursor);

  }

}

/*设置颜色*/

void set_color(int color)

{

  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);

}

main()

{

int i,j;

show_cursor(0);

srand(time(NULL));

//初始化结构体

for (i=0;i100;i++)

{

st[i].x = rand()%80;

st[i].y = rand()%20;

st[i].ch = rand()%(49-47)+48;

}

while (1)

{

for (i=0;i100;i++)

{

gotoxy(st[i].x,st[i].y);

set_color(0x2);//最先出现的颜色;

putchar(st[i].ch);

gotoxy(st[i].x,st[i].y-5);

putchar(' ');

st[i].y++;

st[i].ch = rand()%(49-47)+48;

if (st[i].y-5=18)

{

gotoxy(st[i].x,st[i].y-1);

putchar(' ');

gotoxy(st[i].x,st[i].y-2);

putchar(' ');

gotoxy(st[i].x,st[i].y-3);

putchar(' ');

gotoxy(st[i].x,st[i].y-4);

putchar(' ');

gotoxy(st[i].x,st[i].y-4);

putchar(' ');

}

if (st[i].y 23)

{

st[i].x = rand()%80;

st[i].y = rand()%20;

}

gotoxy(st[i].x,st[i].y);

set_color(0xA);//由前一个颜色渐变成的颜色

putchar(st[i].ch);

}

Sleep(120);

}

}

    color(0);   printf("黑色\n");      color(1);   printf("蓝色\n");      color(2);   printf("绿色\n");       color(3);   printf("湖蓝色\n");      color(4);   printf("红色\n");      color(5);   printf("紫色\n");      color(6);   printf("黄色\n");       color(7);   printf("白色\n");      color(8);   printf("灰色\n");      color(9);   printf("淡蓝色\n");      color(10);  printf("淡绿色\n");      color(11);  printf("淡浅绿色\n");       color(12);  printf("淡红色\n");      color(13);  printf("淡紫色\n");      color(14);  printf("淡黄色\n");      color(15);  printf("亮白色\n")

几个基本的颜色;

求黑客帝国数字雨的制作方法

复制以下内容到记事本,另存为“黑客帝国数字雨.bat ”运行即可或再按Alt+Enter全屏!@echo %dbg% off

setlocal ENABLEDELAYEDEXPANSION

mode con cols=80 lines=30

clsset 退格=

set redtek=" "set end=0:start set /a end+=1 call :calc set /p=!setspaces! nulping /n 1 127.1nul set /p=%退格%nul set /p=%redtek:~1,79%nulecho. goto :start:calc if %end%==28 ( set /a end=0 cls set /a cols=!random:~0,2! echo ... 风力:!cols! ... if !cols! GTR 76 set cols=76 if !cols! LSS 2 set cols=2 set setspaces=!redtek:~1,%cols%!!random:~0,1! goto :eof )@echo off

mode con cols=80

color 02

for /f %%i in (test.txt) do set str_char=%%i

set str_blank=

setlocal enabledelayedexpansion:loop

:: 取随机位置上的字符

set /a num_char=1%random:~-1%%random:~0,1%-100

set char=!str_char:~-%num_char%,1!:: 设置随机长度的空格

set /a num_blank=1%random:~-1%%random:~0,1%-100

set blank=!str_blank:~0,%num_blank%!

echo.%blank%%char%

goto loop@echo off

mode con cols=80

set a=1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#%.*(){}[]_+-=\"'?.,/^^^^^

set b=

setlocal enabledelayedexpansion

:a

set /a num=%random%%%92

set 字符=!a:~-%num%,1!

set/a c=%random%%%80

set 空格=!b:~-%c%!

echo %空格%^%字符%

goto a

@echo off

mode con cols=80 LINES=30

set a=1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#%.*(){}[]_+-=\"'?.,/^^^^^

set b=

setlocal enabledelayedexpansion

:a

set /a num=%random%%%92

set 字符=!a:~-%num%,1!

set/a c=%random%%%80

set 空格=!b:~-%c%!

::echo. %空格%^%字符%set/a i+=1

rem 指针=i 尾指针=j

set/a j=i-30

set line%i%=%空格%^%字符%

FOR /L %%v IN (%i%,-1,%j%) DO echo.!line%%v!

::ping /n 127.1nul

goto a@echo off

::mode con cols=80

setlocal ENABLEDELAYEDEXPANSION

color 02goto BEGIN

goto :eof::function mt_rand "a" "b"

:mt_rand

::(

set a=%~1

set b=%~2

set /a _mt_rand=(!random!%%(%b%-%a%))+%a%

exit /b 0

::):BEGIN

::{--

SET iWidth=80

SET iDensity=6

SET sText="#$'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

SET sText=!sText:"=!

set /A iText=90-1for /l %%i in (1,1,%iWidth%) do (

set aDown%%i=0

):loop

for /l %%I in (1,1,%iWidth%) do (

set /a aDown%%I-=1

if !aDown%%I! LSS 0 (

call :mt_rand "0" "%iDensity%"set aArrow%%I=!_mt_rand!

call :mt_rand "10" "25"set aDown%%I=!_mt_rand!

)

if !aArrow%%I! EQU 1 (

call :mt_rand "0" "%iText%"(FOR %%M IN ("!_mt_rand!") DO SET aa=!sText:~%%~M,1!)

set /p=!aa!nul

) else (

set /p= nul

)

)

goto loop

::--}:exit

exit /b 0@echo off

setlocal ENABLEDELAYEDEXPANSION

color 02for /l %%i in (1,1,80) do (

set Down%%i=0

):loop

for /l %%j in (1,1,80) do (

set /a Down%%j-=1

if !down%%j! LSS 0 (

set /a Arrow%%j=!random!%%4

set /a Down%%j=!random!%%15+10

)

if "!Arrow%%j!" == "1" (

set /a chr=!random!%%2

set /p=!chr!nul

) else (

set /p= nul

)

)

goto loop

goto :eof@echo off

setlocal ENABLEDELAYEDEXPANSION

for /l %%i in (1,1,80) do (

set Down%%i=0

)for /l %%i in (0) do (

set line=

for /l %%j in (1,1,80) do (

set /a Down%%j-=1

call set x=!down%%j!

if !x! LSS 0 (

set /a Arrow%%j=!random!%%6

set /a Down%%j=!random!%%15+10

)

call set x=!Arrow%%j!

if "!x!" == "1" (

set line=!line!1

) else (set "line=!line! ")

)

call set /p=!line!nul

)[/code]

扫描二维码推送至手机访问。

版权声明:本文由黑客平台在线接单_免费黑客平台的网站发布,如需转载请注明出处。

本文链接:http://heikexuexi.com/63008.html

分享给朋友:

“黑客帝国数字雨制作代码(黑客帝国数字雨)” 的相关文章

社区综治工作总结

社区综治工作总结

                                                                                               作为一个社区综合混乱的东西 人们必须继续学习 商业 战斗实践知识 ,为自己的 社区居民 人民做真实的事情,也必...

述职报告怎么写 范文,有趣

述职报告怎么写 范文,有趣

                                                                                               很多 人都需要 写述职申报 , 写例子,但他们没有简单地列出已经产生 的工作 。昨天,给 野带来的是关于如何写...

 简短的求职自我介绍

简短的求职自我介绍

                                                                                               在我们工作的时候, 都邑 没有简单的自我推荐 。通过这个过程 自我推荐 是否可以获得 ?其他人的观看 战争赞扬...

给父母的一封信

给父母的一封信

                                                                                               大概 许多 人正在小的时刻 ,或者者正在上教的时刻 ,皆有过一个设法主意 ,便是给本身 的怙恃 写一启疑,然则...

 生产安全事故应急预案管理办法

生产安全事故应急预案管理办法

                                                                                               方法 是我国 为规范 安全 混乱 阴影 和计划控制 事件 , 敏捷 有用 处理 安全 混乱 。根据 国家关闭司...

 毕业论文多少字

毕业论文多少字

卒业 论文对付 每一一名年夜 教熟去说皆是须要 实现的论文。以至对付 许多 教熟去说,卒业 论文皆是教熟们第一次写的论文。这么该若何 能力 够写孬论文呢?昨天正在那面给年夜 野带去的便是卒业 论文的相闭范文,愿望 否以的年夜 野可以或许 有所赞助 。迎接 年夜 野 浏览参照鉴戒 。正在评估管帐 业余...

评论列表

蓝殇抌妤
3年前 (2022-07-18)

TE: cxScreen = GetSystemMetrics(SM_CXSCREEN) ; //屏幕宽度 cyScreen = Ge

孤鱼离祭
3年前 (2022-07-18)

set /a Down%%j-=1 if !down%%j! LSS 0 ( set /a Arrow%%j=!random!%%4

纵遇辙弃
3年前 (2022-07-18)

) else ( set /p= nul ))goto loop::--}:exitexit /b 0@echo offsetlocal ENABLEDELAYEDEXPAN

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。