[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[特效代码] 【挑战】用批处理画出正方形和抛物线

题1******
要求:1---以圆点“.”,全屏模式,在cmd的中央显示正方形
           2--在程序运行时,要求顺时针,逐渐的显示点运动的轨迹
题2******
要求:1---画出函数y=x^2(x>0) 的图像。
           2--程序运行时,以点的形式,逐渐的显示画图轨迹。
-------------------------------------------------------------------------------------
     此题确实很有难度,不适合新手来完成,因此移至本版块,并修改
了标题,事先未来得及和楼主商量,还请楼主谅解。
                                                                      ----------batman----------
-------------------------------------------------------------------------------------
  1. @echo off&setlocal enabledelayedexpansion&color 0A &cls
  2. rem by myzwd 2009 -3 -10
  3. rem  逆时针描点正方形
  4. :main
  5. set "sp=        "
  6. set "sp1=       "
  7. set "sp2=             "
  8. call:1
  9. goto:eof
  10. :1 向上运动
  11. for /l %%i in (1 1 8) do (
  12. set /a n+=1
  13. set /a m=8-!n!
  14. for /l %%i in (1 1 7) do echo.
  15. for /l %%i in (!m! -1 1) do (echo. !sp!)
  16. for /l %%i in (1 1 !n!) do (echo !sp!a)
  17. echo.
  18. echo ----------------------------
  19. for /l %%1 in (1 1 200) do (call echo.>nul)
  20. cls
  21. )
  22. :2 向左运动
  23. for /l %%i in (1 1 8) do (
  24.    for /l %%i in (1 1 7) do echo.
  25.    set aa=!aa! a
  26.    set /p "=!sp1!!aa!"<nul
  27.    echo.
  28.    for /l %%i in (1 1 7) do (echo !SP!a)
  29. echo.
  30. echo ----------------------------
  31. for /l %%1 in (1 1 200) do (call echo.>nul)
  32. cls
  33. )
  34. :3  向下运动
  35. set n=
  36. set m=
  37. for /l %%i in (1 1 8) do (set cc=!cc!a )
  38. for /l %%i in (1 1 7) do (
  39.   for /l %%i in (1 1 7) do echo.
  40.   echo !sp!!cc!
  41.   set /a n+=1
  42.   set /a m=7-!n!
  43.   for /l %%i in (1 1 !n!) do (echo !sp!a!sp2!a)
  44.   for /l %%i in  (1 1 !m!) do (echo !sp!a)
  45.   echo.
  46. echo ----------------------------
  47. for /l %%1 in (1 1 200) do (call echo.>nul)
  48. cls
  49. )
  50. :4 向右运动
  51. set "sp=          "
  52. set "sp2=             "
  53. set "sp5=        "
  54. set n=
  55. set cc=
  56. for /l %%i in (1 1 8) do (set cc=!cc!a )
  57. for /l %%i in (1 1 16) do (set "sp3=   !sp2!")
  58. for /l %%i in (1 1 8) do (
  59.   for /l %%i in (1 1 7) do echo.
  60.   set /a n+=2&set /a "n1=!n!>>1"
  61.   echo !sp5!!cc!
  62.   for /l %%i in (1 1 6) do (set "sp4=!sp5!a   !sp!a"&echo !sp4!)
  63.   call set /p "=!sp5!%%sp3:~0,-!n!%%"<nul
  64.   for /l %%i in (1 1 !n1!) do (set /p=a<nul )
  65.   echo.&echo.
  66. echo ----------------------------
  67. for /l %%1 in (1 1 180) do (call echo.>nul)
  68. cls
  69. )
  70. :The End
  71. for /l %%i in (1 1 7) do echo.
  72. echo !sp1! !cc!
  73. for /l %%i in (1 1 6) do (set "sp4= !sp1!a   !sp!a" &echo !sp4!)
  74. echo !sp1! !cc!
  75. echo ----------------------------
复制代码
  1. @echo off &setlocal enabledelayedexpansion &cls &color 1a
  2. for /l %%1 in (1 1 80) do set "space= !space!"
  3. mode con cols=80 lines=35
  4. rem 抛物线方程为--(y-16)*(y-16)=x edited by myzwd
  5. for /l %%i in (8 -1 1) do (
  6.   set y=%%i
  7.   set /a "x=y*y"
  8.   call echo %%space:~-!x!%%●
  9.   echo.
  10.   for /l %%1 in (1 1 30) do call echo.>nul
  11. )
  12. for /l %%i in (1 1 8) do (
  13.   set y=%%i
  14.   set /a "x=y*y"
  15.   call echo %%space:~-!x!%%●
  16.   echo.
  17.   for /l %%1 in (1 1 30) do call echo.>nul
  18. )
  19. pause
复制代码


说明:抛物线的画法主要是计算y坐标的增量。不是计算y坐标。

[ 本帖最后由 myzwd 于 2009-3-18 23:45 编辑 ]
1

评分人数

大概以前想到这个的,因为曾经写过
随机游动粒子 http://www.cn-dos.net/forum/viewthread.php?tid=43059
所以对描点的效果,应该算比较熟悉了。

另外,我觉得在特效的流畅方面,可以跟随风取经。
我嘛,作品全在签名的链接里了,感兴趣的话可以看看。

[ 本帖最后由 523066680 于 2009-3-22 14:45 编辑 ]

TOP

回复 18楼 的帖子

我好好学习学习这段代码。看看是怎么编辑的。

TOP

原来有这么搞代码了  先前用笨办法写的  到第二边的时候定义  后面用它
  1. @echo off&setlocal enabledelayedexpansion&color a
  2. set/p n=请输入边长(最大37)
  3. set/a n1=n-2,n2=n*2-3,n3=76-n*2
  4. if %n3% leq 0 echo 输入超出范围&pause&exit
  5. mode con cols=80 lines=40
  6. for /l %%i in (1 1 79) do set "f= !f!"
  7.     for /l %%i in (1 1 %n%) do (
  8.         set "c=* !c!"
  9.         set/a t=%%i*2
  10.         call echo !f:~,5!%%c:~,!t!%%
  11.         for /l %%a in (1,1,200) do echo.>nul
  12.         cls
  13.     )
  14.         set str=!f:~,5!!c:~,-1!
  15.         if %n1% gtr 0 (
  16.         for /l %%i in (1 1 %n1%) do (
  17.             set/a x=n-%%i-1
  18.             set b!x!=!f:~,5!!c:~,-1!!var!
  19.             set var=!var!!f!*
  20.             set str=!f:~,5!*!f:~,%n2%!*!f:~,%n3%!!str!
  21.             set a%%i=!str!
  22.             echo !f:~,5!!c:~,-1!!var!!f!
  23.             for /l %%a in (1,1,200) do echo.>nul
  24.             cls      
  25.      ))
  26.          for /l %%i in (1 1 %n%) do (
  27.             cls
  28.             set/a t=%%i*2
  29.             call echo !f:~,5!!c:~,-1!!var!  %%f:~,-!t!%%%%c:~-!t!%%
  30.             for /l %%a in (1,1,200) do echo.>nul
  31.             
  32.      )
  33.          if %n1% gtr 0 (
  34.          for /l %%i in (1 1 %n1%) do (
  35.             cls
  36.             echo !b%%i!
  37.             echo !a%%i!
  38.             for /l %%a in (1,1,200) do echo.>nul
  39.      ))
  40. pause>nul
复制代码

TOP

1.上面那位同学的用户名~。。。。。。

师傅嘛~    有一句话,师傅领进门,修行在个人~, 需要一个人引导罢了。



2.Yes!  在这里再次收集到 pusofalse  wxcute  batman  more 的加分了  我没有遗憾了!!!心情舒畅啊~

[ 本帖最后由 523066680 于 2009-3-15 12:04 编辑 ]

TOP

好难哦。。。。。。。。。。。。。。。。学习中
专业办理商务广告彩铃,可定制任意内容,真人录音,微信15015783473

TOP

回复 19楼 的帖子

教程才是最好的师傅。
遇到具体问题就来发帖提问,很多热心人会帮你的。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

唉,都是牛人啊,谁肯做我师傅啊

TOP

我突然觉得调用函数可能会使代码短一些 果然如此

  1. @echo off &setlocal enabledelayedexpansion
  2. for /l %%a in (1,1,79) do (set k= !k!)
  3. for /l %%a in (1,1,23) do (set h%%a=%k%)
  4. set /p inp="输入高[2-23]: "
  5. set /a c=0,h=1,i2=inp*2,na=40-inp
  6. set stra=!k:~-%na%!
  7. for %%a in ("c + %i2%" "h + %inp%" "c - 1" "h - 1") do (call :func %%~a)
  8. pause>nul &exit
  9. :func
  10. set /a %1 %2 = 1,cf=c-1
  11. set h%h%=!h%h%:~0,%cf%!.!h%h%:~%c%!
  12. ping -n 1 127.1>nul &cls
  13. for /l %%a in (1,1,%inp%) do (echo,%stra%!h%%a:~0,-%na%!)
  14. if !%1! neq %3 goto :func
复制代码

[ 本帖最后由 523066680 于 2009-3-10 17:27 编辑 ]
4

评分人数

TOP

上面代码 很多都看不明呢

TOP

批处理画方框
好久没用批处理写动画了,也来一个。。
:
  1. @echo off
  2. for /l %%a in (1 1 39) do call set "k= %%k%%"
  3. set /a m=100
  4. :start
  5. setlocal enabledelayedexpansion
  6. cls&echo.&echo.&echo.
  7. set/p=!k:~0,17!<nul
  8. for /l %%a in (1 1 20) do (
  9.    set/p= .<nul
  10.    set "n%%a=  !k:~2!"
  11.    set "yi=!yi! ."
  12.    call :yc !m!
  13. )
  14. echo.
  15. for /l %%a in (1 1 15) do echo !k:~0,17!!k!.&call :yc !m!
  16. set/p=!k:~0,17!!k!.<nul
  17. for /l %%a in (1 1 19) do set /p= .<nul&call :yc !m!
  18. echo.
  19. for /l %%i in (15 -1 1) do (
  20.   cls&echo.&echo.&echo.
  21.   echo !k:~0,17!!yi!
  22.   set n%%i= .!n%%i:~2!
  23.   for /l %%a in (1 1 15) do echo !k:~0,17!!n%%a!.
  24.   echo !k:~0,17!!yi!
  25.   call :yc !m!
  26. )
  27. echo.&echo.&endlocal&cls&call :yc 800&goto start
  28. :yc
  29.    for /l %%a in (1 1 %~1) do ver>nul
  30. goto :EOF
复制代码
1

评分人数

技术问题请到论坛发帖求助!

TOP

刚刚有想做y=x^2 的  不过想想又停止了
因为 x=5 的时候就飙到25行了~

如果是col=line^2 的话可能有看头。

哈哈 改来了, x=y^2的  感觉挺漂亮的
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. mode con cols=102 lines=25
  4. for /l %%a in (1,1,100) do (set k= !k!)
  5. for /l %%a in (-10,1,10) do (set h%%a=%k%)
  6. set la=-11
  7. :la
  8. set /a la+=1,lb=la*la,tlb=100-lb
  9. set h%la%=!h%la%:~%tlb%!.
  10. ping -n 1 127.1>nul
  11. cls
  12. for /l %%a in (-10,1,10) do echo,!h%%a!
  13. if %la% lss 10 goto :la
  14. pause
复制代码

[ 本帖最后由 523066680 于 2009-3-8 14:57 编辑 ]
1

评分人数

    • wxcute: 漂亮,我就想不出。PB + 8

TOP

做的并不严密~  发出来了
  1. @echo off &setlocal enabledelayedexpansion
  2. set /p inp="1~46内的偶数: "
  3. set /a lx=inp/2,la=0,hx=lx,left=(80-inp)/2
  4. for /l %%a in (1,1,80) do (set k= !k!)
  5. set left=!k:~0,%left%!
  6. set "do=" &set "do2=::"
  7. :la
  8. set /a la+=1,lb=0
  9. if %la% gtr 1 (set "do=::" &set h%la%=!k:~-%inp%,-1!.)
  10. if %la% equ %lx% (set "do=")
  11. %do2% set /a lx-=1
  12. %do2% set h%lx%=.!h%lx%:~1!
  13.      :lb
  14. %do% set /a lb+=1
  15. %do% set h%la%=!h%la%!.
  16. %do% set h%la%=!h%la%:~-%inp%!
  17.      ping -n 1 127.1>nul
  18.      cls
  19.      for /l %%a in (1,1,%hx%) do echo,%left%!h%%a!
  20. %do% if %lb% lss %inp% (goto :lb) else (set lb=0)
  21. %do% if %la% equ %lx% (set "do=::" &set "do2=")
  22. if %lx% neq 0 goto :la
  23. pause
复制代码


我觉得改成+号会方一些~

[ 本帖最后由 523066680 于 2009-3-8 14:35 编辑 ]
1

评分人数

    • batman: 强,不愧是existPB + 15

TOP

回复 12楼 的帖子

哦,原来如此。
不过,大家一般以出题的形式发帖时,通常都是自己有了完整的代码。
看来误解你的意思了^_^
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 11楼 的帖子

我真弄不出来。我都说了,我以为批处理做不出来。我是看了随风的那个小球后,才知道批处理可以做这些。
其实我学习批处理,就是一种业余爱好。还得多象你们学习。呵呵

TOP

返回列表