标题: [游戏娱乐] 批处理利用点阵制作小动画示例 [打印本页]
作者: batman 时间: 2008-9-19 10:36 标题: 批处理利用点阵制作小动画示例
之所以写下以下代码,主要目的还在于让大家都了解一下点阵及其应用- @echo off&setlocal enabledelayedexpansion
- color 1f&mode con cols=46 lines=15
- for /f "skip=19 delims=" %%a in (%~fs0) do (
- for %%b in (%%a) do (
- cls&echo 当前坐标:%%b^(以当字位置为0-0^)
- echo ____________________________________________
- for /f "tokens=1,2 delims=-" %%c in ("%%b") do (
- for /l %%e in (1,1,%%d) do echo.
- for /l %%f in (1,1,%%c) do set /p= <nul
- set /p=★<nul&echo.
- set /a num=9-%%d
- for /l %%i in (1,1,!num!) do echo.
- echo ____________________________________________
- for /l %%j in (1,1,1000) do echo>nul
- )
- )
- )
- pause>nul&goto :eof
- 以下是由横竖组坐标构成的点阵:
- 1-1 2-2 3-3 4-4 5-5 6-6 7-7 8-8 9-9
- 10-8 11-7 12-6 13-5 14-4 15-3 16-2 17-1
- 18-2 19-3 20-4 21-5 22-6 23-7 24-8 25-9
- 26-8 27-7 28-6 29-5 30-4 31-3 32-2 33-1
- 34-2 35-3 36-4 37-5 38-6 39-7 40-8 41-9
复制代码
作者: batman 时间: 2008-9-19 11:00
当然对以上这种有规律的情况,完全可以简化成如下代码:- @echo off&setlocal enabledelayedexpansion
- color 1f&mode con cols=46 lines=15
- for /l %%a in (1,1,41) do (
- if defined - (
- set "add=-"
- ) else (
- set "add=+"
- )
- set /a n!add!=1
- if !n! equ 9 set "-=a"
- if !n! equ 1 set "-="
- cls&echo 当前坐标:%%a-!n!
- echo ____________________________________________
- for /l %%b in (1,1,!n!) do echo.
- for /l %%c in (1,1,%%a) do set /p= <nul
- set /p=★<nul&echo.
- set /a num=9-n
- for /l %%e in (1,1,!num!) do echo.
- echo ____________________________________________
- for /l %%f in (1,1,1000) do echo>nul
- )
- pause>nul
复制代码
作者: lixiaodaoaaa 时间: 2008-9-19 11:59 标题: 太难了
太难了,看不懂。。汗死啊。。
郁闷啊。。。
作者: wxcute 时间: 2008-9-19 13:18
哇,楼主用这个做个“桌面弹球”游戏不是很好玩?
[ 本帖最后由 wxcute 于 2008-9-19 13:20 编辑 ]
作者: hongcheng668 时间: 2009-11-10 21:06
code[ ]
echo 不懂 慢慢学习中
code[/]
作者: wzahj 时间: 2009-12-4 16:09
谢谢楼主了 支持了 啊
作者: neorobin 时间: 2009-12-13 00:37 标题: 回复 1楼 的帖子
点轨迹预存算法, 有空我想做个大动画~~
作者: 523066680 时间: 2009-12-13 09:44 标题: 回复 7楼 的帖子
偶曾经做过一个体力类动画(题外话。跟点阵无关~)
是老东西了,虽然外人看来很累赘,不过我觉得没精力去弄了。
瞧我签名还有老东西~- @echo off
- title made by 523066680 2008-08-08
- ::这一版本由www.cn-dos.net & www.bathome.net 成员523066680编辑
- setlocal enabledelayedexpansion
- set fu= ^/ ^\
- set "kong= "
- set "kong2=____________________________________________________________________________"
- set /a a=0,b=0,e=2,tiao=0
- :a
- set /a b+=1,c=30-%b%+%e%
- cls
- echo, 仁有三急……狂奔厕所中……¥#……
- for /l %%a in (1,1,6) do echo,
- echo,!kong:~0,%b%!_ @
- echo,!kong:~0,%b%! ^/
- echo,!kong2:~0,%b%!!fu:~%a%,2!!kong2:~0,%c%!
- ping -n>nul
- if %a% equ 4 (set /a a=0) else (set /a a+=1)
- if %a% leq 2 (set e=2)
- if %a% equ 3 (set e=3)
- if %a% equ 4 (set e=4)
- if not %b% equ 30 goto :a else goto :b
- set /a b=30,j=0,k=6
- :b
- if not %j% equ 6 (set /a j+=1,tiao=%j%) else (set /a k-=1,tiao=%k%)
- set /a b+=1,up=6-%tiao%
- cls
- for /l %%a in (1,1,%up%) do echo,
- echo,!kong:~0,%b%! @/ 偶跳
- echo,!kong:~0,%b%!^<^/
- echo,!kong:~0,%b%!!/^>
- for /l %%a in (1,1,%tiao%) do echo,
- echo,!kong2:~0,30!
- ping -n>nul&ping -n>nul
- if %a% equ 4 (set /a a=0) else (set /a a+=1)
- if %k%==0 (goto :c1) else (goto :b)
-
- :c1
- set /a cc=0,dd=0
- set call1=非礼勿视......
- :c
- if not %tiao% equ 10 set /a tiao+=1
- if not %b% equ 60 set /a b+=1
- if not "%cc%" == "31" (set /a cc+=1,num=30-%cc%)
- if "%cc%"=="31" if not "%dd%"=="31" set /a dd+=1
- cls
- for /l %%a in (1,1,9) do echo,
- echo,!kong2:~0,%num%!
- for /l %%a in (1,1,%tiao%) do echo,
- if %tiao% equ 10 echo,!kong:~0,%b%!!call1:~0,%dd%!
- echo,!kong:~0,%b%!_ @
- echo,!kong:~0,%b%! ^/\
- echo,!kong:~0,%b%!!fu:~%a%,2!
- if %tiao% lss 10 (ping -n>nul&ping -n>nul&ping -n>nul) else (ping -n>nul)
- if %a% equ 4 (set /a a=0) else (set /a a+=1)
- if "%dd%"=="30" (ping -n 2 127.1>nul &exit) else (goto :c)
复制代码
[ 本帖最后由 523066680 于 2009-12-13 09:56 编辑 ]
作者: neorobin 时间: 2009-12-13 15:27 标题: 回复 8楼 的帖子
不错, 代码很简洁, 没仔细看啊, 看效果感觉算法和楼主的差不多, 我的念头是图层粘贴类的算法, 可行性尚未知, 效率是一个大的挑战
作者: vincentzhou 时间: 2010-12-29 13:38 标题: 给代码加个注释(图方便就用c的方式了)
- @echo off&setlocal enabledelayedexpansion //关闭回显并开启变量延迟
- color 1f&mode con cols=46 lines=15 //调整颜色和屏幕大小
- for /f "skip=19 delims=" %%a in (%~fs0) do ( //%~fs0表示当前文件全目录的 短目录,本句意思是读取下面的坐标表中的坐标
- for %%b in (%%a) do ( // 对每一个坐标执行
- cls&echo 当前坐标:%%b^(以当字位置为0-0^) //清除屏幕并显示当前坐标
- echo ____________________________________________ //显示上边界
- for /f "tokens=1,2 delims=-" %%c in ("%%b") do ( // 分别提取横纵坐标
- for /l %%e in (1,1,%%d) do echo. //空纵坐标行
- for /l %%f in (1,1,%%c) do set /p= <nul //光标移动横坐标列
- set /p=★<nul&echo. //显示★并换行
- set /a num=9-%%d
- for /l %%i in (1,1,!num!) do echo. //空9-%%d行 也就是说整个显示区域为10行
- echo ____________________________________________ //显示下边界
- for /l %%j in (1,1,500) do echo>nul //两次显示★间的延时
- )
- )
- )
- pause>nul&goto :eof //暂停 并在按任意键之后退出
- 以下是由横竖组坐标构成的点阵:
- 1-1 2-2 3-3 4-4 5-5 6-6 7-7 8-8 9-9
- 10-8 11-7 12-6 13-5 14-4 15-3 16-2 17-1
- 18-2 19-3 20-4 21-5 22-6 23-7 24-8 25-9
- 26-8 27-7 28-6 29-5 30-4 31-3 32-2 33-1
- 34-2 35-3 36-4 37-5 38-6 39-7 40-8 41-9
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |