Board logo

标题: 动画特效:画圆、弹球、进度条、起落等 [打印本页]

作者: 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