标题: [特效代码] 用bat写一个数码雨脚本 [打印本页]
作者: 牛虻 时间: 2014-9-12 13:31 标题: 用bat写一个数码雨脚本
相信大家都看过黑客帝国,也都知道宣传海报中的数码雨
作者: 牛虻 时间: 2014-9-12 13:49
回复 1# 牛虻 - title 黑客帝国数码雨
- @echo %dbg% off
- :: Code by redtek 2006-11-2 CMD@XP
- :: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=24418
- 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! nul
-
- set /p=%退格%<NUL
-
- set /p=%redtek:~1,79%<NUL&ECHO.
-
- 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
- :: Code by JM 2006-11-3 CMD@XP
- :: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=24418
- :: test.txt内容为:1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#%&*(){}[]_+-=\"'?.,/
- :: 暂时不能处理 |<>^
- 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
- :: Code by 不得不爱 2006-11-3 CMD@XP
- :: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=24418
- 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
- :: Code by yfd11 2006-11-3 CMD@XP
- :: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=24418
- 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.1>nul
- goto a
-
- @echo off
- :: Code by hxuan999 2006-11-12 CMD@XP
- :: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=24418
- ::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
- :: Code by hxuan999 2006-11-12 CMD@XP
- :: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=24418
- 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
- :: Code by newaifi 2006-11-16 CMD@XP
- :: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=24418
- 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
- )
复制代码
运行完不对
作者: neorobin 时间: 2014-9-12 15:29
- @echo off & title The Matrix & setlocal enabledelayedexpansion
-
- for /f "tokens=2 delims=[]" %%a in ('ver') do for /f "tokens=2 delims=. " %%a in ("%%a") do set /a "FullScreen=-((%%a-6)>>31)"
- if "%1"=="" (
- for %%a in ( FontSize:00060004
- FontFamily:00000030
- WindowSize:00320050
- ScreenColors:0000000a
- CodePage:000001b5
- ScreenBufferSize:00320050
- FullScreen:!FullScreen!
- ) do for /f "tokens=1,2 delims=:" %%b in ("%%a") do (
- >nul reg add HKCU\Console\TheMatrix /v %%b /t reg_dword /d 0x%%c /f
- )
- start "TheMatrix" /max "%ComSpec%" /c "%~s0" 1 & exit
- ) else ( >nul reg delete HKCU\Console\TheMatrix /f )
-
-
- REM "Main Title/Trinity Infinity" – 3:54
- if exist "%~dp0matrix4.mp3" (
- start /min wmplayer "%~dp0matrix4.mp3"
- ) else (
- start /min wmplayer http://pisa.ucsd.edu/cse125/2001/cse190g1/matrix4.mp3
- )
-
- set "Matrix="
- set /a "wid=80,hei=50,iMax=wid*hei, sumOfStream=wid*1/2"
- for /l %%i in (1 1 !iMax!) do set "Matrix= !Matrix!"
- set "bss=!Matrix: =!"
-
- set "dic=*_-+|<>'`:.1麴9痫?ō83佧?70?6??
- set "dicLen=42"
-
- for /l %%# in (1 1 !sumOfStream!) do set "s%%#=0"
- for /l %%* in (0 0 0) do (
- for /l %%# in (1 1 !sumOfStream!) do (
- if !s%%#! leq 1 (
- set /a "h%%#=!random!%%(hei-1)+2,p0%%#=!random!%%(wid*(hei+1-h%%#))+1,l%%#=!random! %% h%%# + 1,s%%#=l%%#+h%%#,h%%#+=1,pg%%#=p0%%#,pc%%#=p0%%#"
-
- )
- set /a "s%%#-=1,l%%#-=1,h%%#-=1,old=(l%%#-1)>>31,grow=-h%%#>>31, old0=-^!l%%#,pc%%#=(old0&p0%%#)|(~old0&pc%%#)"
-
- if !old! neq 0 (set "chrc= ") else set "chrc="
- if !grow! neq 0 (
- set /a "r=!random! %% dicLen"
- for %%r in (!r!) do set "chrg=!dic:~%%r,1!"
- ) else set "chrg="
-
- for %%i in (g c) do (
- if defined chr%%i (
- set /a "lL=p%%i%%#-1, lR=iMax-p%%i%%#, r=!random! %% dicLen"
- for /f "tokens=1-3" %%a in ("!lL! !p%%i%%#! !lR!") do (set "Matrix=!Matrix:~0,%%a!!chr%%i!!Matrix:~%%b,%%c!")
- set /a "p%%i%%#+=wid"
- )
- )
- )
- cls & <nul set /p "=!Matrix:~0,-1!"
- )
- exit
复制代码
作者: 523066680 时间: 2014-9-12 15:57
本帖最后由 523066680 于 2014-9-12 16:02 编辑
回复 2# 牛虻
好像CN-DOS以前有个帖子的数码雨效果和这个类似?
不断在尾行增加使得数字“雨”不断往上推。这种方法的话,代码可以更简短的恩。
更好的效果参考3楼
作者: 牛虻 时间: 2014-9-12 16:29
怎么还用到了 wmplayer 了 ::start /min wmplayer
窗口大小能改变吗?
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |