批处理之家's Archiver

lixiaodaoaaa 发表于 2008-9-29 17:08

画个矩形,自己玩

[size=3][size=4][color=Blue]画个矩形,自己玩[/color][/size][size=4]
[/size][size=4][color=Blue]作者: 未知[/color][/size][size=4]
[/size][size=4][color=Blue]转载代码 :在这里向原作者表示感谢..........
========================================================================================================

[/color][/size][size=4][color=Blue][color=Magenta]自己复制代码自己测试下,看效果。呵呵。根据它的提示输入字符,别瞎输入,输入错了,说代码有问题。其实代码没有一点问题,[/color][/color][/size][size=4][color=Blue][color=Magenta]别在楼下骂我就是了。[/color][/color][/size][color=Blue][size=4][color=Red][color=Magenta]我一点都不懂,只是帖出来,大家看下,玩一下而已。有兴趣的跟帖说明[/color].[/color][/size]
[color=Lime]〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓[/color]
[/color][size=4][color=Red][code]@echo off
color 0a
::::::::绘制矩形 {s11ss 2007-10-12}::::::::
setlocal enabledelayedexpansion
if "%1" equ "/?" (
        call :help
        echo 例如:%0 * 8 500
        goto :eof
)

::设置变量:
if "%1" equ "" (
        call :help
        echo 现在就输入参数,如* 8 500:
        set/p s=
        for /f "tokens=1,2* delims= " %%a in ("!s!") do (
                set c=%%a
                set n=%%b
                set w=%%c
        )
) else (
        set c=%1
        set n=%2
        set w=%3
)
set/a r=%n%-2
for /l %%a in (1,1,%n%) do (
        set up=!up!%c%
        for /l %%i in (1,1,%%a) do set down%%a=!down%%a!%c%
        set/a t=%n%-%%a
        ::pause
        for /l %%z in (1,1,!t!) do set down%%a= !down%%a!
        if %%a leq %r% set space%r%= !space%r%!
)
set mid1=!space%r%! %c%
set mid2=%c%!space%r%!%c%

::分四步绘制:
::1.上边的棱
for /l %%a in (1,1,%n%) do (
        cls
        echo !up:~0,%%a!
        call :delay
)
::2.右边的棱
>t.x echo !up!
for /l %%a in (1,1,%n%) do (
        if %%a leq %r% (
                echo !mid1!
                >>t.x echo !mid1!
                call :delay
        )
)
::3.下边的棱
for /l %%a in (1,1,%n%) do (
        cls
        type t.x
        echo !down%%a!
        call :delay
)
::4.左边的棱
for /l %%a in (1,1,%n%) do (
        if %%a leq %r% (
                cls
                echo !up!
                set/a t=%r%-%%a
                for /l %%i in (1,1,!t!) do (
                        echo !mid1!
                )
                for /l %%z in (1,1,%%a) do (
                        echo !mid2!
                )
                echo !up!
                call :delay               
        )
)

::结束:
del t.x
pause>nul
goto :eof

::函数部分:
:delay
for /l %%x in (1,1,%w%) do (echo Waiting...>nul)
goto :eof

:help
echo 参数一:用于显示的字符,如*。
echo 参数二:一行字符的个数,如8。
echo 参数三:字符之间的延时,如500。[/code][/color][/size]
[/size]

[[i] 本帖最后由 lixiaodaoaaa 于 2008-9-29 17:11 编辑 [/i]]

youxi01 发表于 2008-9-29 18:12

呵呵,作者似乎不是未知啊
而是s11ss啊

lixiaodaoaaa 发表于 2008-9-29 19:07

我不认识啊,我是随便转转看到的

[size=5][color=Blue]我不认识啊,我是随便转转看到的[/color]
[color=Blue]我没有罪,youxi01,不要判我刑啊。。怕怕怕[/color][/size]

yata 发表于 2008-12-11 16:00

相信没罪!只怕要打屁屁!^_^

xiong8707 发表于 2008-12-27 05:01

BUG

@echo off
color 0a
::::::::绘制矩形 {s11ss 2007-10-12}::::::::
setlocal enabledelayedexpansion
if "%1" equ "/?" (
        call :help
        echo 例如:%0 * 8 500
        goto :eof
)

::设置变量:
if "%1" equ "" (
        call :help
        echo 现在就输入参数,如* 8 500:
        set/p s=
        for /f "tokens=1,2* delims= " %%a in ("!s!") do (
                set c=%%a
                set n=%%b
                set w=%%c
        )
) else (
        set c=%1
        set n=%2
        set w=%3
)
set/a r=%n%-2
for /l %%a in (1,1,%n%) do (
        set up=!up!%c%
        for /l %%i in (1,1,%%a) do set down%%a=!down%%a!%c%
        set/a t=%n%-%%a
        ::pause
        for /l %%z in (1,1,!t!) do set down%%a= !down%%a!
        if %%a leq %r% set space%r%= !space%r%!
)
set mid1=!space%r%! %c%
set mid2=%c%!space%r%!%c%

::分四步绘制:
::1.上边的棱
for /l %%a in (1,1,%n%) do (
        cls
        echo !up:~0,%%a!
        call :delay
)
::2.右边的棱
>t.x echo !up!
for /l %%a in (1,1,%n%) do (
        if %%a leq %r% (
                echo !mid1!
                >>t.x echo !mid1!
                call :delay
        )
)
::3.下边的棱
for /l %%a in (1,1,%n%) do (
        cls
        type t.x
        echo !down%%a!
        call :delay
)
::4.左边的棱
for /l %%a in (1,1,%n%) do (
        if %%a leq %r% (
                cls
                echo !up!
                set/a t=%r%-%%a
                for /l %%i in (1,1,!t!) do (
                        echo !mid1!
                )
                for /l %%z in (1,1,%%a) do (
                        echo !mid2!
                )
                echo !up!
                call :delay               
        )
)

::结束:
del t.x
pause>nul
goto :eof

::函数部分:
:delay
for /l %%x in (1,1,%w%) do (echo Waiting...>nul)
goto :eof

:help
echo 参数一:用于显示的字符,如*。
echo 参数二:一行字符的个数,如8。
echo 参数三:字符之间的延时,如500。

输入20 就不是画框了 不知道画了个什么玩意

ning22047 发表于 2008-12-30 23:10

初来乍到,回复楼主一个,

hkmhd 发表于 2008-12-31 09:06

看来第二个参数只能使用0-9~超出会有错误

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.