标题: 动画特效:画圆、弹球、进度条、起落等
[打印本页]
作者: 523066680
时间: 2008-8-10 10:58
标题: 动画特效:画圆、弹球、进度条、起落等
很想研究下能不能做成圆 ……头晕
@echo off
setlocal enabledelayedexpansion
set "kong= "
set h= o
for /l %%a in (1,1,10) do (
ping -n>nul &ping -n>nul
set h=!h: = !
echo !h!
)
for /l %%a in (1,1,9) do (
ping -n>nul &ping -n>nul
set h=!h: = !
echo !h!
)
pause
───────────────── 版务记录 ─────────────────
执行:HAT
操作:[2008-12-17]在帖子标题中增加搜索关键字;代码加code标签
说明:原标题"玩些小特效"不利于论坛搜索
处罚:原创内容本应予以积分奖励,现免除奖励,并惩罚性扣除2点积分
提示:建议阅读以下帖子
{1415}提问的智慧
{7326}论坛新手必读,所有人的基本行为准则
{22703}请不要做浮躁的人
{32667}[愤怒]那些连标题都写不清楚的人们啊,你们醒醒吧
{32825}本版严厉整顿烂帖
───────────────── 版务记录 ─────────────────
[
Last edited by HAT on 2008-12-17 at 22:13 ]
作者: flyinspace
时间: 2008-8-10 13:49
呵呵,想法很好玩呀。试着写了一个。大家看看可以不。
忘记加code了现在补上
@echo off & setlocal EnableDelayedExpansion
mode con:cols=100 lines=100
echo.
echo 利用批处理绘制圆形,BETA 1.00 版。2008年8月10日编译完成。
echo.
echo ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
set "DrawPoint=○"
set "Radius=19"
set /a "Square=%Radius%*%Radius%"
set /a "Diameter=%Radius%*2"
set "Interval= "
set /a "y=%Diameter%"
set /a "x=0"
set /a "Area1=%Square%+10"
set /a "Area2=%Square%-10"
for /l %%i in (%Diameter%,-1,0) do Call :Draw_Point "%%i"
goto :End
:Draw_Point _y_
set "Line=┃"
for /l %%i in (0,1,%Diameter%) do (
call :Compute_Deuce_Length "%%i" "%1"
call :Draw_Line "!CResult!"
)
echo %Line%┃
goto :EOF
:Draw_Line _rst_
set "res=%~1"
if '%res% LSS %Area2%' (
set "Line=%Line%%Interval%"
goto :EOF
)
if '%res% GTR %Area1%' (
set "Line=%Line%%Interval%"
goto :EOF
)
set "Line=%Line%%DrawPoint%"
goto :EOF
:Compute_Deuce_Length _x_ _y_
set "Cx=%~1"
set "Cy=%~2"
if "%Cx%" LEQ "%Radius%" (
set /a "Factor1=%Radius%-%Cx%"
) else (
set /a "Factor1=%Cx%-%Radius%"
)
if "%Cy%" LEQ "%Radius%" (
set /a "Factor2=%Radius%-%Cy%"
) else (
set /a "Factor2=%Cy%-%Radius%"
)
set /a "Factor1=%Factor1%*%Factor1%"
set /a "Factor2=%Factor2%*%Factor2%"
set /a "CResult=%Factor1%+%Factor2%"
goto :EOF
:End
echo ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
echo.
echo 本演示由 Flyinspace 发表于 [url]http://www.cn-dos.net/forum[/url] ,转载请注明.
pause>nul
[
Last edited by flyinspace on 2008-8-10 at 02:15 PM ]
作者: flyinspace
时间: 2008-8-10 13:52
标题: 最后效果如图
11111
附件
1:
1.JPG (2008-8-10 13:52, 50.22 K, 下载附件所需积分 1点
,下载次数: 1)
作者: 523066680
时间: 2008-8-10 16:22
你太帅B啦~~!!!!加分!
作者: 523066680
时间: 2008-12-13 11:30
标题: 详细版的进度条
这个帖子就用拉发效果好了
@echo off&setlocal enabledelayedexpansion&mode con cols=25 lines=1
title 进度条
set /a a=0
:a
set /a a+=1
for %%a in (▏ ▎ ▍ ▌ ▋ ▊ ▉) do (set /p=%%a<nul &ping -n 1 127.1>nul &ping -n 1 127.1>nul &ping -n 1 127.1>nul &set /p= <nul)
set /p=█<nul
if %a% lss 10 (goto :a)
set /p= End<nul&pause>nul
作者: 523066680
时间: 2008-12-13 11:31
标题: 做弹球意料之外的效果
@echo off &setlocal enabledelayedexpansion
title made by hi.baidu.com/523066680
color 17 &mode con cols=60 lines=30
for /l %%a in (1,1,60) do (set space= !space!)
set /a La=14,Lb=30,Ca=29,Cb=59,r=5
:loop
if %La% lss 29 (set /a La+=2,line=La) else (set /a Lb-=2,line=Lb)
if %Lb% leq -1 (set /a La=-1,Lb=30,r=%random%%%3+2)
if %Ca% lss 58 (set /a Ca+=r,col=Ca) else (set /a Cb-=r,col=Cb)
if %Cb% leq 4 (set /a Ca=-1,Cb=59,r=%random%%%3+1)
for /l %%a in (1,1,%line%) do echo,
echo,!space:~0,%col%!●
ping -n 1 127.1>nul
goto :loop
作者: 523066680
时间: 2008-12-13 11:32
标题: 起 和 落
@echo off
setlocal enabledelayedexpansion
mode con cols=60 lines=30
for /l %%a in (1,1,60) do (set space= !space!)
for /l %%a in (1,1,15) do (set ls=%space%!ls!)
set String=%ls:~31%O
:loop
set /a a=0,b=0
:a
set /a a+=1
set String=!String:%space%O=O!
echo %String%
ping -n 1 127.0>nul
ping -n 1 127.0>nul
if %a% lss 20 goto :a
:b
set /a a-=1
set String=!String:O=%space%O!
echo %String%
ping -n 1 127.0>nul
ping -n 1 127.0>nul
if %a% gtr 0 goto :b
goto :loop
作者: winxos
时间: 2008-12-17 22:02
标题: 太帅气了
楼主真有创意。
作者: 523066680
时间: 2008-12-18 10:41
这些 小 特效来的,不适合发一个新帖,所以用追老帖的形式发
作者: wxcute
时间: 2008-12-18 11:58
特效我是不会写,只能特前来欣赏一下。^_^
作者: yishanju
时间: 2008-12-18 12:52
可以做一个批处理等效合集的电子书了
作者: stldzx
时间: 2009-1-26 20:06
呵呵,楼主太帅啦
作者: 523066680
时间: 2009-3-8 04:06
标题: cols=lines*lines 曲线
@echo off
setlocal enabledelayedexpansion
mode con cols=102 lines=25
for /l %%a in (1,1,100) do (set k= !k!)
for /l %%a in (-10,1,10) do (set h%%a=%k%)
set la=-11
:la
set /a la+=1,lb=la*la,tlb=100-lb
set h%la%=!h%la%:~%tlb%!.
ping -n 1 127.1>nul
cls
for /l %%a in (-10,1,10) do echo,!h%%a!
if %la% lss 10 goto :la
pause
[
Last edited by 523066680 on 2009-3-15 at 01:16 ]
作者: rootkit
时间: 2009-3-8 04:59
标题: cmd promt of exploring this topic
汗,我现在在命令行下阅读这个贴子,正在测试下。呵呵
不知道怎么看,现在就用EDIT这个命令来回复主题。
作者: 523066680
时间: 2009-3-15 01:15
标题: 顺时针画框
哇 也想试试 cmd 下看帖的感觉.等下去看看
---------------------------正题----------------------------
http://bbs.bathome.cn/viewthread.php?tid=3537
18楼
@echo off &setlocal enabledelayedexpansion
for /l %%a in (1,1,79) do (set k= !k!)
for /l %%a in (1,1,23) do (set h%%a=%k%)
set /p inp="输入高[2-23]: "
set /a c=0,h=1,i2=inp*2,na=40-inp
set stra=!k:~-%na%!
for %%a in ("c + %i2%" "h + %inp%" "c - 1" "h - 1") do (call :func %%~a)
pause>nul &exit
:func
set /a %1 %2 = 1,cf=c-1
set h%h%=!h%h%:~0,%cf%!.!h%h%:~%c%!
ping -n 1 127.1>nul &cls
for /l %%a in (1,1,%inp%) do (echo,%stra%!h%%a:~0,-%na%!)
if !%1! neq %3 goto :func
作者: skywhite0
时间: 2009-3-15 12:25
先学习。。哪天会了,再回来。。。
作者: DwD
时间: 2009-3-16 06:24
我把空格换成了#,set h=!h:####=#####!这句话就是每次加一个#吧,为什么它变化的时候每循环两次后,就加了两个##呢?谁能解释下。
@echo off
setlocal enabledelayedexpansion
set "kong= "
rem set h= o
set h=#####o
for /l %%a in (1,1,10) do (
ping -n>nul &ping -n>nul
rem set h=!h: = !
set h=!h:####=#####!
echo !h!
)
for /l %%a in (1,1,9) do (
ping -n>nul &ping -n>nul
set h=!h:#####=####!
echo !h!
)
pause
为什么换空格换成*后,得出了结果不正常了,谁再能帮解释下。
@echo off
setlocal enabledelayedexpansion
set "kong= "
rem set h= o
set h=*****o
for /l %%a in (1,1,10) do (
ping -n>nul &ping -n>nul
rem set h=!h: = !
set h=!h:****=*****!
echo !h!
)
for /l %%a in (1,1,9) do (
ping -n>nul &ping -n>nul
set h=!h:*****=****!
echo !h!
)
pause
作者: logottfb
时间: 2009-3-16 07:01
本人技术不高
随便改个
群星乱闪给大家
@echo off
setlocal enabledelayedexpansion
mode con cols=102 lines=25
:loop
for /l %%a in (1,1,100) do (set k= !k!)
for /l %%a in (-10,1,10) do (set h%%a=%k%)
set la=-11
:la
set /a la+=1,lb=la*la,tlb=100-lb
set h%la%=!h%la%:~%tlb%!.
ping -n 1 127.1>nul
cls
for /l %%a in (-10,1,10) do echo,!h%%a!
if %la% lss 10 goto :la
goto loop
作者: netbenton
时间: 2009-3-16 20:40
学18楼的,
楼主原来的,球靠近后出现拖尾,并且到行尾后有时越界,
改善一下。
@echo off &setlocal enabledelayedexpansion
title made by hi.baidu.com/523066680
color 17 &mode con cols=60 lines=30
for /l %%a in (1,1,60) do (set space= !space!)
set /a La=14,Lb=30,Ca=29,Cb=57,r=5
:loop
if %La% lss 29 (set /a La+=2,line=La) else (set /a Lb-=2,line=Lb)
if %Lb% leq -1 (set /a La=-1,Lb=30,r=%random%%%3+2)
set/a nnn=ca+r
if %nnn% lss 59 (set /a Ca+=r,col=Ca) else (set /a Cb-=r,col=Cb)
if %Cb% leq 4 (set /a Ca=-1,Cb=59,r=%random%%%3+1)
if %line% lss 15 (
for /l %%a in (1,1,29) do echo,
for /l %%a in (1,1,%line%) do echo,
echo,!space:~0,%col%!●
)
for /l %%a in (1,1,%line%) do echo,
echo,!space:~0,%col%!●
ping -n 1 127.1>nul
goto :loop
作者: 523066680
时间: 2009-3-17 01:44
嘿嘿 ~ 模仿 随风 的弹球 的时候 繁衍出来的错误效果,netbenton改的不错撒。
另外17楼
set h=!h:####=#####! 如果只有4个 则是加一个
但是当有8个的时候,这句话会把它分开,每4个加一个 也就是加两个了
所以。。。。
作者: 523066680
时间: 2009-5-1 21:40
标题: 旋进的曲线哦
@echo off
setlocal enabledelayedexpansion
set /a a=7,b=-6
for /l %%a in (1,1,80) do (set space= !space!)
:loop
if %a% gtr -6 (set /a a-=1,k=a*a) else (set /a b+=1,k=72-b*b)
if %b% equ 6 (set /a a=6,b=-6)
echo, !space:~0,%k%!*
for %%a in (a b) do ping -n 1 127.1>nul
goto :loop
作者: hjh700913
时间: 2009-5-6 21:04
先学习。。哪天会了,再回来。。。
作者: hjh700913
时间: 2009-5-6 21:05
先学习。。哪天会了,再回来。。。
先学习。。哪天会了,再回来。。。
先学习。。哪天会了,再回来。。。
先学习。。哪天会了,再回来。。。
先学习。。哪天会了,再回来。。。
先学习。。哪天会了,再回来。。。
先学习。。哪天会了,再回来。。。
先学习。。哪天会了,再回来。。。
先学习。。哪天会了,再回来。。。
先学习。。哪天会了,再回来。。。
作者: 523066680
时间: 2009-5-16 05:07
标题: 彩色蜿蜒曲线
@echo off
::code by 523066680 / if_exist
setlocal enabledelayedexpansion
for /l %%a in (1,1,80) do (set k= !k!)
set /a a=7,b=-6,color=0
set /p= <nul>OO
:a
set /a color+=1
if %a% gtr -6 (set /a a-=1,x=a*a) else (set /a b+=1,x=72-b*b)
if %b% equ 6 (set /a a=6,b=-6)
for %%a in (a b) do (
set /p a=!k:~0,%x%!<nul
findstr /a:%color% "OO*"
echo,
)
ping -n 1 127.1>nul
if %color% leq 200 goto :a
pause
作者: hongzhi14
时间: 2009-6-28 03:26
很有意思,都收藏了,呵呵
作者: jianny
时间: 2009-7-1 14:23
动画效果很帅!更令人有兴趣学习bat
作者: 523066680
时间: 2010-1-26 21:47
快过年了 偷偷来一个: 幽灵出没
@echo off
setlocal enabledelayedexpansion
title 幽灵:我在这里待很久了,你没发现吗?
rem Author: if_exist / 523066680
for /l %%a in (1,1,80) do (set spc= !spc!)
set /a x=1,tmpy=-10
set /a xadd=1,yadd=1,xaddadd=1
:a
cls
for /l %%a in (1,1,%y%) do (echo,)
echo,!spc:~0,%x%!*
set /a i=0,x+=xadd,tmpy+=yadd*(%random%%%2+1),y=tmpy+10,xadd+=xaddadd,yadd+=0
if %xadd:-=% gtr 7 (set /a xaddadd=-xaddadd)
if %tmpy:-=% gtr 10 (set /a yadd=-yadd)
ping -n 1 127.0.0.1>nul
goto :a
作者: 523066680
时间: 2010-1-26 22:45
标题: 飞虫
@echo off
setlocal enabledelayedexpansion
title 幽灵:我在批处理之家待很久了,你没发现吗?
rem Author: if_exist / 523066680
for /l %%a in (1,1,79) do (set spc= !spc!)
for /l %%a in (1,1,21) do (set line%%a=%spc%)
set /a x=1,tmpy=-10,xb=x+1,a=1
set /a xadd=1,yadd=1,xaddadd=1
:a
if defined do[%a%] (!do[%a%]!)
if defined do[%a%] (
set line%cuty%=!line%cuty%:~0,%cutx%! !line%cuty%:~%cutxb%!
)
set line%y%=!line%y%:~0,%x%!*!line%y%:~%xb%!
cls
for /l %%a in (1,1,21) do (echo,!line%%a!)
set /a i=0,x+=xadd,tmpy+=yadd,y=tmpy+10,xadd+=xaddadd,xb=x+1
set "do[%a%]=set /a cutx=%x%,cuty=%y%,cutxb=%xb%"
if %a% leq 10 (set /a a+=1) else (set /a a=1)
if %xadd:-=% gtr 7 (set /a xaddadd=-xaddadd)
if %tmpy:-=% gtr 10 (set /a yadd=-yadd)
ping -n 1 127.0.0.1>nul
goto :a
pause
作者: acaigg
时间: 2010-12-28 15:35
好玩呀
作者: gudou
时间: 2011-1-4 12:11
强悍的帖子,强悍的技术,强悍的LZ……PFPF
作者: 19900313
时间: 2011-1-5 18:23








