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

TOP

先发一个画正方形的,但没完成逐步显示这个步骤(左边竖边比较困难,还没想到好的办法),给大家做参考了:
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p l=请输入正方形的边长(小于46的偶数):
  3. echo exit|%ComSpec% /k prompt e 100 B4 00 B0 12 CD 10 B0 03 CD 10 CD 20 $_g$_q$_|debug>nul
  4. chcp 437 >nul
  5. graftabl 936 >nul
  6. set /a g=l/2,kk=40-l/2
  7. for /l %%a in (1,1,%kk%) do set "kkk=!kkk! "
  8. echo.&echo.
  9. for /l %%a in (1,1,%g%) do (
  10.     set /p=%kkk%<nul&set "a="
  11.   for %%c in (1 %g%) do if %%a equ %%c set "a=a"
  12.     for /l %%b in (1,1,%l%) do (
  13.         set "_%%a-%%b= "
  14.         for %%d in (1 %l%) do if %%b equ %%d set "b=a"
  15.         if defined a (
  16.            set /p=.<nul
  17.            ) else (
  18.            if defined b (
  19.               set /p=.<nul&set "b="
  20.               ) else (
  21.               set /p= <nul
  22.            )
  23.         )
  24.     )
  25.     echo.
  26. )
  27. pause>nul
复制代码
ps:楼主出的题很有难度,不适合新手来完成,所以移至代码咨询区。

[ 本帖最后由 batman 于 2009-3-2 07:44 编辑 ]
***共同提高***

TOP

原帖由 Batcher 于 2009-3-2 15:33 发表
我运行了,没有报错。
但是没有实现完全意义上的居中,因为代码没有判断屏幕的高度。

这是因为用代码根本没办法判断全屏的高度的,这是和显示器的高度有关的参数,不同型号的显示器上这个数值是不同的,所以就没有用代码进行计算了。。。
***共同提高***

TOP

实现了逐步画图,但效果实在不怎么样:
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p l=请输入正方形的边长(小于46的偶数):
  3. echo exit|%ComSpec% /k prompt e 100 B4 00 B0 12 CD 10 B0 03 CD 10 CD 20 $_g$_q$_|debug>nul
  4. chcp 437 >nul
  5. graftabl 936 >nul
  6. set /a g=l/2,kk=40-l/2,l1=l-1,g1=g-2,s1=l,s2=s1+g1,s3=s2+l
  7. for /l %%a in (1,1,%kk%) do set "kkk=!kkk! "
  8. for /l %%a in (1,1,%l1%) do set "k1=!k1! "
  9. echo.&echo.
  10. for /l %%a in (1,1,%l%) do set /a n+=1&set "_!n!=."
  11. for /l %%a in (1,1,%g1%) do set /a n+=1&set "_!n!=%k1%."
  12. for /l %%a in (1,1,%l%) do (
  13.     set /a a=l-%%a
  14.     for /l %%b in (1,1,!a!) do set "k2=!k2! "
  15.     for /l %%c in (1,1,%%a) do set ".=!.!."
  16.     set /a n+=1&set "_!n!=!k2!!.!"&set "k2="&set ".="
  17. )
  18. set /a n+=g1
  19. for /l %%a in (1,1,%n%) do (
  20.     for /l %%b in (1,1,%%a) do (
  21.         if %%b leq %s1% (
  22.            if %%b equ 1 set /p=%kkk%<nul>temp
  23.            set /p=!_%%b!<nul>>temp
  24.            if %%b equ %s1% echo.>>temp
  25.            ) else (
  26.            if %%b leq %s2% (
  27.               echo %kkk%!_%%b!>>temp
  28.               ) else (
  29.               if %%b leq %s3% (
  30.                  set /a a=kk+%%b
  31.                  for /l %%c in (1,1,!a!) do set /p= <nul>>temp
  32.                  set /p=%kkk%!_%%b!<nul>>temp
  33.               )
  34.            )
  35.          )
  36.     )
  37.     cls&type temp
  38.     if %%a gtr %s3% (
  39.        set /a a=s2+s3-%%a
  40.        for /l %%d in (%s2%,-1,!a!) do set "a=!_%%d!"&set "a=.!a:~1!"&set "_%%d=!a!"
  41.     )
  42. )
  43. pause>nul&del /q temp
复制代码

[ 本帖最后由 batman 于 2009-3-5 23:31 编辑 ]
***共同提高***

TOP

这次效果上没问题了(不用全屏):
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p l=请输入正方形的边长(小于46的偶数):
  3. set /a g=l/2,kk=40-l/2,l1=l-1,g1=g-2,s1=l,s2=s1+g1,s3=s2+l
  4. for /l %%a in (1,1,%kk%) do set "kkk=!kkk! "
  5. for /l %%a in (1,1,%l1%) do set "k1=!k1! "
  6. for /l %%a in (1,1,%l%) do (
  7.     set /a n+=1&set "_!n!=."
  8.     set "str=!str!."
  9. )
  10. for /l %%a in (1,1,%g1%) do set /a n+=1&set "_!n!=%k1%."
  11. for /l %%a in (1,1,%l%) do (
  12.     set /a a=l-%%a
  13.     for /l %%b in (1,1,!a!) do set "k2=!k2! "
  14.     for /l %%c in (1,1,%%a) do set ".=!.!."
  15.     set /a n+=1&set "_!n!=!k2!!.!"&set "k2="&set ".="
  16. )
  17. set /a n+=g1
  18. for /l %%a in (1,1,%n%) do (
  19.     for /l %%b in (1,1,%%a) do (
  20.         if %%b leq %s1% (
  21.            if %%b equ 1 set /p=%kkk%<nul>temp
  22.            set /p=!_%%b!<nul>>temp
  23.            if %%b equ %s1% echo.>>temp
  24.            ) else (
  25.            if %%b leq %s2% (
  26.               echo %kkk%!_%%b!>>temp
  27.               ) else (
  28.               set "flag=a"
  29.               if %%b geq %s3% set "ok=a"  
  30.             )
  31.          )
  32.     )
  33.     if defined ok (
  34.        echo %kkk%%str%>>temp
  35.        ) else (
  36.        if defined flag echo %kkk%!_%%a!>>temp
  37.     )
  38.     for /l %%d in (1,1,50) do echo>nul
  39.     cls&type temp
  40.     if %%a gtr %s3% (
  41.        set /a a=s2+s3-%%a
  42.        for /l %%e in (%s2%,-1,!a!) do set "a=!_%%e!"&set "a=.!a:~1!"&set "_%%e=!a!"
  43.     )
  44. )
  45. pause>nul&del /q temp
复制代码

[ 本帖最后由 batman 于 2009-3-6 00:32 编辑 ]
***共同提高***

TOP

返回列表