Board logo

标题: [特效代码] 批处理怎样实现字体闪烁? [打印本页]

作者: zhnzhouhan    时间: 2007-12-26 14:26     标题: 批处理怎样实现字体闪烁?

@echo off&setlocal enabledelayedexpansion
set str=忆往昔 我笑豺狼哭 叱咤天地风云际 望今朝 笑贫不笑娼
人民不敌人民币
for %%i in (%str%) do (
        set char=%%i
        echo.
        echo.
call :aa %%i&&call :hero %%i
:aa
        for /l %%j in (0,1,15) do (
                set/p= !char:~%%j,1!<nul
                ping -n 1 127.1>nul
        )
)
:hero
for /l %%k in (1,1,3) do (
set /p a=%1<nul
ping /n 1 127.1>nul
set /p a=<nul
set /p a=                                                              <nul
set /p a=<nul
ping /n 1 127.1>nul
)
goto :eof
pause>nul


以上代码是为了实现让字体逐个显示后,然后再每句闪烁3次!
但是我写的这个代码实现得不是很好!并且在最后一行完成显示后,被覆盖掉了!
还望高手帮忙!
作者: novaa    时间: 2007-12-26 16:14

  1. @echo off&setlocal enabledelayedexpansion
  2. set str=忆往昔 我笑豺狼哭 叱咤天地风云际 望今朝 笑贫不笑娼 ^
  3. 人民不敌人民币
  4. for %%i in (%str%) do (
  5. set List=%%i
  6. call :OneByOne !List!
  7. echo\&echo\
  8. )
  9. echo 演示完毕.任意键以退出.
  10. pause>nul
  11. :OneByOne
  12. set /p=!List:~0,1!  <NUL
  13. set List=!List:~1!
  14. set /p=<NUL
  15. if not *"!List!"==*"" (ping /n 1 127.1>nul&goto :OneByOne)
  16. ping /n 2 127.1>nul
  17. call :Shine %1
  18. goto :eof
  19. :Shine
  20. call :Clear
  21. set /p=             %1<NUL&CALL :Clear
  22. goto :eof
  23. :Clear
  24. for /l %%j in (1 1 60) do (
  25. set /p=<NUL
  26. )
复制代码

[ 本帖最后由 novaa 于 2007-12-26 17:28 编辑 ]
作者: zhnzhouhan    时间: 2007-12-26 16:25

版主:
以上代码你测试过了吗?
我复制你的代码测试不行啊!
只显示NUL然后就不动了??
作者: ieutk    时间: 2007-12-26 16:41

  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=忆往昔 我笑豺狼哭 叱咤天地风云际 望今朝 笑贫不笑娼 人民不敌人民币"
  3. for %%i in (%str%) do (
  4. set List=%%i
  5. call :OneByOne !List!
  6. echo\&echo\
  7.     )
  8. echo  演示完毕,按任意键退出. . .
  9. pause>nul
  10. goto :eof
  11. :OneByOne
  12. set /p=!List:~0,1! <nul
  13. set /p=<nul
  14. set List=!List:~1!
  15. if not "!List!"=="" (goto :OneByOne)
  16. for /l %%j in (1 1 100) do @set /p=<nul
  17. set /p=  %1<nul
  18. for /l %%j in (1 1 100) do @set /p=<nul
  19. goto :eof
复制代码

作者: novaa    时间: 2007-12-26 17:26

已经在二楼更正了。郁闷 。。。。
作者: 随风    时间: 2007-12-26 20:43

我猜楼上两位都理解错了楼主的意识,
楼主似乎要求的是,先逐字显示一句,再闪烁这一句,
字符闪烁其实很简单,就是利用退格键,先显示字符,再用空格覆盖显示的字符,再显示字符....
加上延时,就起到了闪烁的效果了.
试试下面的代码.
:
  1. @echo off&setlocal enabledelayedexpansion
  2. set str=忆往昔 我笑豺狼哭 叱咤天地风云际 望今朝 笑贫不笑娼 人民不敌人民币
  3. for %%i in (%str%) do (
  4.    set var=%%i&set num=%%i
  5.    set /a max=0,ge=0
  6.    call :lis !var!
  7. )
  8. echo\&echo  演示完毕,按任意键退出. . .
  9. pause>nul&exit
  10. :lis
  11. set /p=!var:~0,1!<nul
  12. set /a ge+=2
  13. set var=!var:~1!
  14. for /l %%a in (1 1 1200) do ver>nul
  15. if not defined var (
  16. set ko= &set t=
  17.   for /l %%a in (1 1 !ge!) do set ko= !ko!&set t=!t!
  18.   set /p=!t!<nul
  19.   goto loop
  20. )
  21. goto lis
  22. :loop
  23. set /p=!ko!<nul
  24. set /p=!t!<nul
  25. for /l %%a in (1 1 1200) do ver>nul
  26. set /a max+=1
  27. set num=%ko%&set ko=%num%
  28. if !max! geq 4 echo\&goto :eof
  29. goto loop
复制代码

作者: youxi01    时间: 2007-12-26 21:06

随风兄似乎写了很多有关动画方面的代码了,哈哈

上段代码 在显示字符的时候,延时可不可以缩短一些呢?
这样可能动画效果更好
作者: 随风    时间: 2007-12-26 21:44

原帖由 youxi01 于 2007-12-26 21:06 发表
随风兄似乎写了很多有关动画方面的代码了,哈哈

上段代码 在显示字符的时候,延时可不可以缩短一些呢?
这样可能动画效果更好


呵呵,感觉动画更能挑战思路一些.

上面的代码仅仅只为达到效果,没作优化和美化.
作者: novaa    时间: 2007-12-26 22:25

  1. if not defined var (
  2. set ko= &set t=
  3. for /l %%a in (1 1 !ge!) do set ko= !ko!&set t=!t!
  4. set /p=!t!<NUL
  5. goto loop
  6. )
复制代码


随风版主啊!
这个漂亮啊!
又学习了。!
作者: zhnzhouhan    时间: 2007-12-28 00:05     标题: 感谢各位!

谢谢楼上的各位!
我自己也写了个,就是按我原来的改的!
写得不好,大家勿笑啊!!
  1. @echo off&setlocal enabledelayedexpansion
  2. set str=忆往昔 我笑豺狼哭 叱咤天地风云际 望今朝 笑贫不笑娼 人民不敌人民币
  3. for %%i in (%str%) do (
  4.         set char=%%i
  5.         echo.
  6.         echo.
  7.         for /l %%j in (0,1,15) do (
  8.                 set/p=!char:~%%j,1!<nul
  9.                 ping -n 1 127.1>nul
  10.         )
  11. set /p a=<nul
  12. set /p a=                <nul
  13. set /p a=<nul
  14. call :hero %%i
  15. echo %%i
  16. )
  17. pause>nul
  18. :hero
  19. for /l %%k in (1,1,3) do (
  20. set /p a=%1<nul
  21. ping /n 1 127.1>nul
  22. set /p a=<nul
  23. set /p a=                 <nul
  24. set /p a=<nul
  25. ping /n 1 127.1>nul
  26. )
  27. goto :eof
复制代码

[ 本帖最后由 zhnzhouhan 于 2007-12-28 00:06 编辑 ]
作者: foxJL    时间: 2007-12-28 01:35

凑个热闹...
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%i in (
  3. 忆往昔 我笑豺狼哭 叱咤天地风云际 望今朝 笑贫不笑娼 人民不敌人民币
  4. ) do (
  5. set str=%%i
  6. for /l %%j in (0,1,15) do (
  7.   call set/p=%%str:~%%j,1%%<nul
  8.   ping -n 1 127.1>nul
  9. )
  10. call :back
  11. echo\&echo\
  12. )
  13. pause
  14. :back
  15. for /l %%a in (1,1,3) do (
  16. for %%b in (b a b) do (
  17. if "%%b"=="a" (set a= ) else (set a=)
  18. for /l %%i in (1,1,15) do (set/p=!a!<nul)
  19. ping -n 1 127.1>nul
  20. )
  21. ping -n 1 127.1>nul
  22. set/p=!str!<nul
  23. )
  24. goto :eof
复制代码

[ 本帖最后由 foxJL 于 2007-12-28 21:27 编辑 ]




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2