找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 35715|回复: 10

[特效代码] BAT脚本实现分形图:龙形曲线

[复制链接]
发表于 2017-4-14 15:29:08 | 显示全部楼层 |阅读模式
  1. %1 @goto :initCON
  2. @echo off & setlocal enabledelayedexpansion
  3. call :clearVars
  4. set /a "w=100,h=68, h1=h+0,t=w*h,xc=w/2+1,yc=h/2"

  5. set "TAB=        " & for /F %%a in ('"prompt $h&for %%b in (1) do rem"')do Set "BS=%%a"
  6. set /a "buffwid = w, linesWantBackAbove = h + 1 - 1, cntBS = 2 + (buffwid + 7) / 8 * linesWantBackAbove"
  7. set "BSs=" & for /L %%a in (1 1 !cntBS!) do set "BSs=!BSs!%BS%"
  8. set "aLineBS=" & for /L %%a in (1 1 !w!) do set "aLineBS=!aLineBS!%BS%"

  9. mode %w%,%h1%

  10. for /l %%i in (1 1 !t!) do set "s=!s! "
  11. set "xv=-1" & set "yv=0 "

  12. set "pttn=.@.@.@.@.@.@.@."
  13. REM 画出初始曲线段
  14. set /a "x=xinit=28, y=yinit=-10, length=1, len2=(length-1) * 2"
  15. set /a "i=x-xc + (y-yc) * w + 1, L=i-1"
  16. for /f "tokens=1,2" %%a in ("!L! !i!") do (set s=!s:~0,%%a!!pttn:~0,1!!s:~%%b!)
  17. for /L %%L in (0 2 !len2!) do (
  18.     set /a "x += !xv:~%%L,2!, y += !yv:~%%L,2!"
  19.     set /a "i=x-xc + (y-yc) * w + 1, L=i-1"
  20.     for /f "tokens=1,2" %%a in ("!L! !i!") do (set s=!s:~0,%%a!!pttn:~0,1!!s:~%%b!)
  21. )
  22. set "pttn=!pttn:~1!"
  23. call :f !xinit! !yinit! !length! s xv yv
  24. title complete & >nul pause &exit
  25. :f xtail ytail length s xv yv
  26. REM setlocal

  27.     if %3 lss 4096 (

  28.         set "vxr=" & set "vyr="

  29.         set /a "x=%1, y=%2, len2=(%3 - 1) * 2, nextLength=%3 * 2"
  30.         for /L %%L in (0 2 !len2!) do (
  31.             set /a "xn = - !yv:~%%L,2!, yn = !xv:~%%L,2!"
  32.             
  33.             set /a "x += -xn, y += -yn" & rem xn,yn 得到顺时针90旋转 取反的值
  34.             set /a "i=x-xc + (y-yc) * w + 1, L=i-1, inScr=(x-(-w/2+1)^x-(w/2+1))&(y-(-h/2+1)^y-(h/2+1))"
  35.             if !inScr! lss 0 (
  36.                 for /f "tokens=1,2" %%a in ("!L! !i!") do (set s=!s:~0,%%a!!pttn:~0,1!!s:~%%b!)

  37.                 <nul set /p "=!aLineBS!" & (2>nul echo;%TAB%!BSs!) & <nul set /p "=%BS%"
  38.                 <nul set /p "=%BS%!s:~0,-1!"
  39.             )

  40.             set "xn=  !xn!" & set "yn=  !yn!"
  41.             set "vxr=!xn:~-2!!vxr!" & set "vyr=!yn:~-2!!vyr!"
  42.         )
  43.         set "pttn=!pttn:~1!"

  44.         set "xv=!vxr!!xv!" & set "yv=!vyr!!yv!"

  45.         call :f !x! !y! !nextLength! %4 %5 %6
  46.     )

  47. exit /b

  48. :initCON
  49. @echo off
  50. for %%a in (  FontSize:00080008      FontFamily:00000030  WindowSize:00C800C8
  51.               ScreenColors:0000000f  CodePage:000001b5    ScreenBufferSize:00C800C8
  52. ) do for /f "tokens=1,2 delims=:" %%b in ("%%a") do (
  53.   >nul reg add HKCU\Console\Dragon_curve /v %%b /t reg_dword /d 0x%%c /f
  54. )
  55. start "Dragon_curve" /max "%ComSpec%" /c "%~0" REM & (call :delReg) & exit
  56. REM end of :initCON
  57. exit /b
  58. :clearVars
  59. set "Path=%SystemRoot%\system32"
  60. for /f "delims==" %%a in ('set') do (
  61.   if /i "%%a" neq "Path" set "%%a="
  62. )
  63. exit /b
  64. REM end of :clearVars
  65. :delReg
  66. setlocal enabledelayedexpansion
  67. set "s=!time:~-4,1!"
  68. :delReg.loop
  69. set /a "elapse = (1!time:~-4,1! - s) %% 10"
  70. if %elapse% lss 2 goto :delReg.loop
  71. >nul reg delete HKCU\Console\Dragon_curve /f
  72. endlocal
  73. exit /b
  74. REM end of :delReg
复制代码

评分

参与人数 3技术 +3 收起 理由
happy886rr + 1 BS=O(∩_∩)O~
老刘1号 + 1 厉害
523066680 + 1 斯国一

查看全部评分

发表于 2017-4-14 21:47:36 | 显示全部楼层
本帖最后由 老刘1号 于 2017-4-14 21:49 编辑

每次看到这种帖子我都忍不住要安利下aa77dd兄的帖子http://www.bathome.net/thread-41913-1-1.html
发表于 2017-4-14 21:58:46 | 显示全部楼层
回复 2# 老刘1号


    →__→也许是同一个人呢
发表于 2017-4-14 22:46:35 | 显示全部楼层
本帖最后由 老刘1号 于 2017-4-14 22:48 编辑

回复 3# codegay


    还别说,有可能……
在批家搜索框里输入FontSize:      FontFamily:  WindowSize:
或者ScreenColors:  CodePage:    ScreenBufferSize:
总能搜到一些让人惊奇的东东
话说这样的奇诡用法难道没有什么帖子讲解么。。。
发表于 2017-4-14 23:22:28 | 显示全部楼层
回复 4# 老刘1号


    猜啊
发表于 2017-4-14 23:53:39 | 显示全部楼层
回复 5# codegay


    兄所言甚善
发表于 2017-4-20 14:13:55 | 显示全部楼层
回复 1# a20150604


    能不能画出个中国地图?
世界地图更厉害了
发表于 2017-4-22 19:26:55 | 显示全部楼层
回复 7# 牛虻


    这是算法……不是固定复制上去的……
发表于 2017-4-22 22:06:12 | 显示全部楼层
回复 4# 老刘1号


    煋,这是修改CMD属性的注册表HKEY_CURRENT_USER\Console
    比如说你可以通过修改注册表给cmd的字体大小 颜色之类的进行魔改
发表于 2017-4-22 22:57:09 | 显示全部楼层
回复 9# bbaa


太好玩    感觉停不下来了……
发表于 2018-10-6 18:07:12 | 显示全部楼层
  1. @echo off
  2. echo "膜拜大佬"
  3. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 21:09 , Processed in 0.021132 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表