黑客代码雨特效代码(黑客数码雨怎么弄)
黑客帝国文字雨 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即可。