黑客代码雨特效代码(黑客数码雨怎么弄)

http://www.itjxue.com  2023-02-02 04:52  来源:未知  点击次数: 

黑客帝国文字雨 flash 怎么制作

可用C语言编程来达到黑客文字雨的效果??。。。

效果如下:

代码如下,vc++编译通过?。。

#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)?;

}

黑客帝国--绿色字母雨代码--知道的进

BODY

script language="JavaScript"

!--

if (document.all){

Cols=6;

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

Cs=10;

Ts=10;

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标签~

谁有黑客帝国里面的数字雨的动态图片

孩子~自己做吧!首先点击开始→所有程序→附件→记事本 然后就把下面的代码复制到记事本里,另存为“黑客帝国数字雨.bat” 然后另存为成功后运行文件即可实现桌面数字雨或按Alt+Enter实现全屏数字雨

注:请忽修改下面数字雨代码的任何一个字母,否则将无法成功允许(包括空格在内)

数字雨代码如下: @echo %dbg% off

setlocal ENABLEDELAYEDEXPANSION

mode con cols=80 lines=30

cls

set 退格=

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 02

goto 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-1

for /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 02

for /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]

如何编写电脑代码雨?

代码雨就是代码数字不断的刷新,这个效果可以通过几句简单的程序来实现,具体方法如下:

1、电脑用户在自己的电脑桌面上创建一个文本文件。创建以后打开。

2、打开以后,在文件中输入代码。代码如下图所示。

3、完成代码雨的代码编写以后,点击工具栏中的文件。然后在点击另存为。

4、点击另存为以后,将下方的文件名的后缀改为“.bat”。文件名用户随意定义。修改好以后点击“保存”。

5、完成文件的编写和保存以后,右击文件点击以管理员身份运行。

6、运行效果如下。

注意事项:

1、代码不用写错,写错不能运行。

2、在另存的时候,如果不显示后缀,将保持文件选成“所有文件”,在文件名称后面直接打.bat即可。

(责任编辑:IT教学网)

更多

推荐Access文章