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

[特效代码] [分享]choice应用小示例-批处理版坦克特效

说明:
    本批是为对choice.exe应用示例而写,运行前请先确定你的系统中有choice.exe,
没有的请先到本论坛下载choice.exe(解压到windows\system32下),链接如下:
http://bbs.bathome.net/viewthread.php?tid=1726&highlight=choice
  1. @echo off&setlocal enabledelayedexpansion
  2. title 可移动的坦克&color 02
  3. for /l %%a in (1,1,30) do set "k=!k! "
  4. set /a num=10
  5. set "t1=    ‖"
  6. set "t2= ┐_‖_┌"
  7. set "t3=┋o nn o┋"
  8. set "t4=┋(∩)┋"
  9. set "t5= ┘~WW~└"
  10. :begin
  11. cls
  12. echo 方向控制为:w上s下a左d右(z键退出)&echo.
  13. for /l %%a in (1,1,%num%) do echo.
  14. for /l %%a in (1,1,5) do echo %k%!t%%a!
  15. choice /n /c "wsadz"
  16. if %errorlevel% equ 1 if %num% neq 0 set /a num-=1
  17. if %errorlevel% equ 2 if %num% neq 17 set /a num+=1"
  18. if %errorlevel% equ 3 if "%k:~1%" neq "" set "k=%k:~1%"
  19. if %errorlevel% equ 4 if "%k:~67%" equ "" set "k=%k% "
  20. if %errorlevel% equ 5 goto :eof
  21. goto begin
复制代码

[ 本帖最后由 batman 于 2009-10-19 00:53 编辑 ]
***共同提高***

学习了,谢谢楼主!

TOP

再附上不用choice的版本(使用debug模拟choice),大家可比较下效果:
  1. @echo off&setlocal enabledelayedexpansion
  2. title 可移动的坦克&color 02
  3. chcp 437>nul
  4. graftabl 936>nul
  5. for /l %%a in (1,1,30) do set "k=!k! "
  6. set /a num=10
  7. set "t1=    ‖"
  8. set "t2= ┐_‖_┌"
  9. set "t3=┋o nn o┋"
  10. set "t4=┋(∩)┋"
  11. set "t5= ┘~WW~└"
  12. :begin
  13. cls
  14. echo 方向控制为:w上s下a左d右(z键退出)&echo.
  15. for /l %%a in (1,1,%num%) do echo.
  16. for /l %%a in (1,1,5) do echo %k%!t%%a!
  17. echo exit|cmd/kprompt $_e 100 CD 16 B4 4C CD 21$_g$_|debug>nul
  18. if %errorlevel% equ 119 if %num% neq 0 set /a num-=1
  19. if %errorlevel% equ 115 if %num% neq 17 set /a num+=1"
  20. if %errorlevel% equ 97 if "%k:~1%" neq "" set "k=%k:~1%"
  21. if %errorlevel% equ 100 if "%k:~67%" equ "" set "k=%k% "
  22. if %errorlevel% equ 122 goto :eof
  23. goto begin
复制代码
***共同提高***

TOP

第一个运行:不停的闪,操作不了,提示CHOICE不是内部命令
第二个运行OK

TOP

真不好意思,没有下载choice.exe

TOP

坦克不是螃蟹...要是头能拐弯就好了

TOP

加入射击效果

大家可以通过改变for /l %%a in (1,1,50) do echo>nul处"50"的值来调节射击速度:
  1. @echo off&setlocal enabledelayedexpansion
  2. title 坦克&color 02
  3. for /l %%a in (1,1,30) do set "k=!k! "
  4. set /a num=10
  5. set "t1=    ‖"
  6. set "t2= ┐_‖_┌"
  7. set "t3=┋o nn o┋"
  8. set "t4=┋(∩)┋"
  9. set "t5= ┘~WW~└"
  10. :begin
  11. cls&echo 方向控制为:w上s下a左d右f射击(z键退出)&echo.
  12. for /l %%a in (1,1,%num%) do (
  13.     set "b="
  14.     if defined mc (
  15.        if "%%a" equ "%dd%" (
  16.           set "b=    ·"
  17.           if "%dd%" equ "%num%" set "b=   "∵'"
  18.           if "%dd%" equ "1" set "b=  ."¤'~"
  19.           ) else (
  20.           set "b="
  21.        )
  22.     )
  23.     echo.%k%!b!
  24. )
  25. for /l %%a in (1,1,5) do echo %k%!t%%a!
  26. choice /n /c "wsadfz"%mc%
  27. if %errorlevel% equ 1 if %num% neq 0 set /a num-=1
  28. if %errorlevel% equ 2 if %num% neq 16 set /a num+=1"
  29. if %errorlevel% equ 3 if "%k:~1%" neq "" set "k=%k:~1%"
  30. if %errorlevel% equ 4 if "%k:~67%" equ "" set "k=%k% "
  31. if %errorlevel% equ 5 (
  32.    if "!n!" neq "%num%" (
  33.       set /a n+=1,dd=num-n+1
  34.       set "mc= /d f /t 0"
  35.       for /l %%a in (1,1,50) do echo>nul
  36.       goto begin
  37.       ) else (
  38.       set /a n=0&set "mc="
  39.    )
  40. )
  41. if %errorlevel% equ 6 goto :eof
  42. goto begin
复制代码

[ 本帖最后由 batman 于 2009-10-18 18:05 编辑 ]
***共同提高***

TOP

原帖由 canyuexiaolang 于 2009-10-18 11:41 发表
坦克不是螃蟹...要是头能拐弯就好了

1、头拐弯是很容易的事,只是我现在没法用字符画出横着的坦克(府视角度)。
2、本批是用来对choice.exe应用示例,特效不是重点,这我在顶楼就说明了的。
***共同提高***

TOP

下了论坛的chioce.exe并运行了,可还是提醒choice不是内部命令,高手指点

TOP

再次更新爆炸特效

  1. @echo off&setlocal enabledelayedexpansion
  2. title 坦克&color 02
  3. for /l %%a in (1,1,30) do set "k=!k! "
  4. for /l %%a in (1,1,66) do set "cl=!cl! "
  5. set /a num=10
  6. set "t1=    ‖"
  7. set "t2= ┐_‖_┌"
  8. set "t3=┋o nn o┋"
  9. set "t4=┋(∩)┋"
  10. set "t5= ┘~WW~└"
  11. :begin
  12. cls&echo 方向控制为:w上s下a左d右f射击(z键退出)&echo.
  13. for /l %%a in (1,1,%num%) do (
  14.     set "b="
  15.     if defined mc (
  16.        if "%%a" equ "%dd%" (
  17.           set "b=    ·"
  18.           if "%dd%" equ "%num%" (
  19.              set "b=   "∵'"
  20.           )
  21.           if "%dd%" equ "1" (
  22.              set "b=   "¤~."
  23.              for /l %%b in (1,1,5) do (
  24.                  set /p=%k%    ★<nul
  25.                  call :delay 100&set /p=%cl%%k%!b!<nul
  26.                  call :delay 100&set /p=%cl%<nul
  27.              )
  28.              echo.
  29.           )
  30.           ) else (
  31.           set "b="
  32.        )
  33.     )
  34.     echo.%k%!b!
  35. )
  36. for /l %%a in (1,1,5) do echo %k%!t%%a!
  37. choice /n /c "wsadfz"%mc%
  38. if %errorlevel% equ 1 if %num% neq 0 set /a num-=1
  39. if %errorlevel% equ 2 if %num% neq 16 set /a num+=1"
  40. if %errorlevel% equ 3 if "%k:~1%" neq "" set "k=%k:~1%"
  41. if %errorlevel% equ 4 if "%k:~67%" equ "" set "k=%k% "
  42. if %errorlevel% equ 5 (
  43.    if "!n!" neq "%num%" (
  44.       set /a n+=1,dd=num-n+1
  45.       set "mc= /d f /t 0"
  46.       call :delay 500&goto begin
  47.       ) else (
  48.       set /a n=0&set "mc="
  49.    )
  50. )
  51. if %errorlevel% equ 6 goto :eof
  52. goto begin
  53. :delay
  54. for /l %%c in (1,1,%1) do echo>nul
复制代码
***共同提高***

TOP

尽量不要用debug的好,我在很多电脑上遇到使用16位程序时系统蓝屏的情况。
可能很多显卡驱动根本就不再支持16位模式。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

更新至可转向的坦克(射击暂无)

  1. @echo off&setlocal enabledelayedexpansion
  2. title 坦克&color 02
  3. for /l %%a in (1,1,35) do set "k=!k! "
  4. set /a num=10
  5. set "t1-1=    ‖"
  6. set "t1-2= ┐_‖_┌"
  7. set "t1-3=┋o nn o┋"
  8. set "t1-4=┋(∩)┋"
  9. set "t1-5= ┘~WW~└"     
  10. set "t2-1= ┐_MM_┌"
  11. set "t2-2=┋(∪)┋"
  12. set "t2-3=┋o uu o┋"
  13. set "t2-4= ┘~‖~└"
  14. set "t2-5=    ‖"
  15. set "t3-1=  ┌ …… ┐"
  16. set "t3-2=   │o ~│"
  17. set "t3-3======E(G 〕"
  18. set "t3-4=   │o ~│"
  19. set "t3-5=  └ …… ┘"
  20. set "t4-1=┌ …… ┐"
  21. set "t4-2= │~ o│"
  22. set "t4-3=〔 D)B====="
  23. set "t4-4= │~ o│"
  24. set "t4-5=└ …… ┘"
  25. :begin
  26. cls&echo 方向控制为:w上s下a左d右(z键退出)&echo.
  27. for /l %%a in (1,1,%num%) do echo.
  28. if not defined n set /a n=1
  29. for /l %%a in (1,1,5) do echo %k%!t%n%-%%a!
  30. choice /n /c "wsadz"
  31. if %errorlevel% equ 5 goto :eof
  32. if %errorlevel% neq %n% set /a num_%n%=0
  33. set /a num_%errorlevel%+=1,n=%errorlevel%
  34. if !num_%errorlevel%! neq 1 (
  35.    if %errorlevel% equ 1 if %num% neq 0 set /a num-=1
  36.    if %errorlevel% equ 2 if %num% neq 17 set /a num+=1"
  37.    if %errorlevel% equ 3 if "%k:~1%" neq "" set "k=%k:~1%"
  38.    if %errorlevel% equ 4 if "%k:~66%" equ "" set "k=%k% "
  39. )
  40. goto begin
复制代码

[ 本帖最后由 batman 于 2009-10-19 00:21 编辑 ]
***共同提高***

TOP

原帖由 feiyang3x 于 2009-10-18 18:09 发表
下了论坛的chioce.exe并运行了,可还是提醒choice不是内部命令,高手指点

是choice.exe不是chioce.exe,,,而且运行没用的...要放到c:\windows\system32下,顶楼不是说了嘛

TOP

更新至能转向和射击(有射击特效)的坦克

本来还可加入音效,考虑太复杂了,暂不加了,在运行前请先确定系统中有没有choice.exe:
  1. @echo off&setlocal enabledelayedexpansion
  2. title 坦克&color 02
  3. for /l %%a in (1,1,35) do set "k=!k! "
  4. for /l %%a in (1,1,66) do set "kk=!kk! "
  5. set /a num_w=10,num_s=16,n=1,w=-1,s=-1,a=1,d=-1,w_num=0,s_num=0
  6. set "t1-1=    ‖"
  7. set "t1-2= ┐_‖_┌"
  8. set "t1-3=┋o nn o┋"
  9. set "t1-4=┋(∩)┋"
  10. set "t1-5= ┘~WW~└"     
  11. set "t2-1= ┐_MM_┌"
  12. set "t2-2=┋(∪)┋"
  13. set "t2-3=┋o uu o┋"
  14. set "t2-4= ┘~‖~└"
  15. set "t2-5=    ‖"
  16. set "t3-1=  ┌ …… ┐"
  17. set "t3-2=   │o ~│"
  18. set "t3-3======E(G 〕"
  19. set "t3-4=   │o ~│"
  20. set "t3-5=  └ …… ┘"
  21. set "t4-1=┌ …… ┐"
  22. set "t4-2= │~ o│"
  23. set "t4-3=〔 D)B====="
  24. set "t4-4= │~ o│"
  25. set "t4-5=└ …… ┘"
  26. :begin
  27. cd.>%~n0.tem
  28. echo 方向控制为:w上s下a左d右f射击^(z键退出^)>>%~n0.tem&echo.>>%~n0.tem
  29. for /l %%a in (1,1,%num_w%) do (
  30.     set "w_f="
  31.     if defined dt if %%a equ %w_num% (
  32.        set "w_f=    ·"
  33.        if %%a equ %num_w% set "w_f=   "∵'"
  34.        if %%a equ 1 set "w_f=    ¤"
  35.     )
  36.     echo.%k%!w_f!>>%~n0.tem
  37. )
  38. for /l %%a in (1,1,5) do (
  39.     set "ok="
  40.     if %%a equ 3 if defined dt if %n% equ 3 (
  41.        set "a_f=·"
  42.        if "%k_a%" equ "" set "a_f=∷"
  43.        if  "!K:~%a%!" equ "" set "a_f=¤"
  44.        echo !k:~%a%!!a_f!%k_a%!t%n%-%%a!>>%~n0.tem&set "ok=a"
  45.     )
  46.     if %%a equ 3 if defined dt if %n% equ 4 (
  47.        set "s_f=·"
  48.        if "%k_d%" equ "" set "s_f=∷"
  49.        if  "%k%%k_d%" equ "%kk:~1%" set "s_f=¤"
  50.       echo %k%!t%n%-%%a!%k_d%!s_f!>>%~n0.tem&set "ok=a"
  51.     )
  52.     if not defined ok echo %k%!t%n%-%%a!>>%~n0.tem
  53. )
  54. for /l %%a in (%num_s%,1,21) do (
  55.     set "s_f="
  56.     if defined dt if %%a equ %s_num% (
  57.        set "s_f=    ·"
  58.        if %%a equ %num_s% set "s_f=   "∵'"
  59.        if %%a equ 21 set "s_f=    ¤"
  60.     )
  61.     echo.%k%!s_f!>>%~n0.tem
  62. )
  63. cls&type %~n0.tem
  64. choice /n /c "wsadfz"%dt%
  65. if %errorlevel% equ 6 del /q %~n0.tem>nul 2>nul&goto :eof
  66. set /a num_e=%errorlevel%
  67. if %num_e% equ 5 (
  68.    if %n% equ 1 (
  69.       if %w% lss %num_w% (
  70.          set "dt= /d "f" /t 0"
  71.          set /a w+=1,w_num=num_w-w
  72.          for /l %%a in (1,1,200) do echo>nul
  73.          ) else (
  74.          set /a w=-1,w_num=0&set "dt="
  75.       )
  76.    )
  77.    if %n% equ 2 (
  78.       if %s_num% lss 21 (
  79.          set "dt= /d "f" /t 0"
  80.          set /a s+=1,s_num=num_s+s
  81.          for /l %%a in (1,1,200) do echo>nul
  82.          ) else (
  83.          set /a s=-1,s_num=0&set "dt="
  84.       )
  85.    )
  86.    if %n% equ 3 (
  87.       if "!k_a!" neq "%k:~2%" (
  88.          set "dt= /d "f" /t 0"
  89.          set /a a+=1&set "k_a="
  90.          for /l %%a in (3,1,!a!) do set "k_a=!k_a! "
  91.          ) else (
  92.          set /a a=1&set "dt="&set "k_a="
  93.       )
  94.    )
  95.    if %n% equ 4 (
  96.       if "!k_d!%k%" neq "%kk:~1%" (
  97.          set "dt= /d "f" /t 0"
  98.          set /a d+=1&set "k_d="
  99.          for /l %%a in (1,1,!d!) do set "k_d=!k_d! "
  100.          ) else (
  101.          set /a d=-1&set "dt="&set "k_d="
  102.       )
  103.    )
  104. )     
  105. if %num_e% neq %n% set /a _%n%=0
  106. if %num_e% lss 5 set /a _%num_e%+=1,n=%num_e%
  107. if !num_%num_e%! neq 1 (
  108.    if %num_e% equ 1 if %num_w% neq 0 set /a num_w-=1,num_s-=1
  109.    if %num_e% equ 2 if %num_w% neq 16 set /a num_w+=1,num_s+=1
  110.    if %num_e% equ 3 if "%k:~1%" neq "" set "k=%k:~1%"
  111.    if %num_e% equ 4 if "%k:~64%" equ "" set "k=%k% "
  112. )
  113. goto begin
复制代码
***共同提高***

TOP

cd.>%~n0.tem
看来是不支持文件名有空格了

TOP

返回列表