Board logo

标题: [游戏娱乐] 批处理顺时针描点正方形 [打印本页]

作者: myzwd    时间: 2009-3-15 13:59     标题: 批处理顺时针描点正方形

  1. @echo off&setlocal enabledelayedexpansion&cls&color 1a
  2. for /l %%1 in (1 1 80) do set "space= !space!"
  3. set /p side=请输入边长(默认值10,最大值38,最小值2)---
  4. set /a "y.center.min=%side%/2+4"
  5. set /a "x.center.max=79-%side%"
  6. set /a "y.center.max=42-%y.center.min%"
  7. set /p x.center=%side%^<"中心x坐标"^<%x.center.max%--请输入[默认值40]--
  8. set /p y.center=%y.center.min%^<"中心y坐标"^<%y.center.max%--请输入[默认值21]--
  9. set /a "side1=%side%-1"
  10. set /a "byte=%side%*2"
  11. set /a "side2=%side%-2"
  12. set /a "side3=%byte%-4"
  13. set /a "x.left=%x.center%-%byte%/2"
  14. set /a "x.right=%x.center%+%byte%/2"
  15. set /a "y.up=%y.center%-%side%/2"
  16. set /a "md=%side%%%2"
  17. if  %md%==0 (set /a "y.up=%y.up%+1")
  18. set /a "y.down=%y.center%+%side%/2"
  19. mode con cols=80 lines=42
  20. :up
  21. for /l %%i in (1 1 !side2!) do (
  22.   cls
  23.   set /a "y.echo=!y.down!-%%i"
  24.   for /l %%j in (1 1 !y.echo!) do echo.
  25.   for /l %%k in (1 1 %%i) do (call echo %%space:~-!x.left!%%■)
  26.   for /l %%1 in (1 1 30) do (call echo.>nul)
  27. )
  28. :right
  29. for /l %%i in (1 1 !side1!) do (
  30.    cls
  31.    for /l %%i in (1 1 !y.up!) do echo.
  32.    set square.right=■!square.right!
  33.    call set /p=%%space:~-!x.left!%%!square.right!<nul
  34.    echo.
  35.    for /l %%1 in (1 1 !side2!) do (call echo %%space:~-!x.left!%%■)
  36.    for /l %%1 in (1 1 30) do (call echo.>nul)
  37. )
  38. :down
  39. for /l %%i in (1 1 !side1!) do (
  40.    cls
  41.    for /l %%j in (1 1 !y.up!) do echo.
  42.    call set /p=%%space:~-!x.left!%%<nul
  43.    for /l %%1 in (1 1 !side!) do set /p=■<nul
  44.    echo.
  45.    set /a "high=%%i-1"
  46.    set /a "high1=!side2!-!high!"
  47.    for /l %%k in (1 1 !high!) do (
  48.       call echo %%space:~-!x.left!%%■%%space:~-!side3!%%■
  49.    )
  50.    for /l %%k in (1 1 !high1!) do (call echo %%space:~-!x.left!%%■)
  51.    for /l %%1 in (1 1 30) do (call echo.>nul)
  52. )
  53. :left
  54. for /l %%i in (1 1 !side!) do (
  55. cls
  56. for /l %%j in (1 1 !y.up!) do echo.
  57. call set /p=%%space:~-!x.left!%%<nul
  58. for /l %%1 in (1 1 !side!) do set /p=■<nul
  59. echo.
  60. for /l %%2 in (1 1 !side2!) do (call echo %%space:~-!x.left!%%■%%space:~-!side3!%%■)
  61. call set sp=%%space:~-!x.right!%%
  62. set /a "ll=%%i*2"
  63. call set /p=%%sp:~!ll!%%<nul
  64. set square1=!square1!■
  65. set /p=!square1!<nul
  66. for /l %%1 in (1 1 30) do (call echo.>nul)
  67. echo.
  68. )
  69. echo.
  70. set rr="%space:~-17%---顺时针描点%side%x%side%正方形by myzwd------------"
  71. echo  >%rr%
  72. findstr /a:cb .* %rr%*
  73. del %rr%
  74. pause >nul
复制代码

作者: defanive    时间: 2009-3-15 14:38

描点错误,鉴定完毕~
一会自己也写一个。。。
作者: myzwd    时间: 2009-3-15 15:04     标题: 回复 2楼 的帖子

我又检查了一次 ,没见到错误啊。能说一下描点错在那一边吗
作者: defanive    时间: 2009-3-15 15:06

上下两边,没有居中。。。
作者: namejm    时间: 2009-3-15 15:11

  楼主还是用[code] 和 [/code]把代码部分括起来吧,以方便大家复制。
作者: myzwd    时间: 2009-3-15 15:24     标题: 回复 4楼 的帖子

我本来就没说要让它居中,绝对居中有点麻烦。只是基本居中。呵呵
作者: defanive    时间: 2009-3-15 15:42

我这边完全没有居中。。。
应该很简单的吧,算一下就好了。。。
作者: myzwd    时间: 2009-3-15 16:24     标题: 回复 7楼 的帖子

1个方块占2个字节,cmd一行是80个字节,这个小方块的2个字节要分居在40,41号位置上。如果是2个小方块那到好办。居中到总是可以,但要奇偶分类,麻烦。。懒得改了。管它的。就算是一个实习作业,下次在做作业时再让它居中。呵呵。

[ 本帖最后由 myzwd 于 2009-3-15 16:35 编辑 ]
作者: Batcher    时间: 2009-3-15 16:35     标题: 回复 8楼 的帖子

默认一行80个
但我的就改成100个了呵呵
作者: 523066680    时间: 2009-3-20 16:47

全屏居中: 注意上面空行数,和左边空格数就是了
一般取偶数,方便除2  。  

我来打广告好了  
曾经的作品:中间变大变小的方形筐筐
http://www.cn-dos.net/forum/viewthread.php?tid=40711

那张帖子有vkill 的回贴,以后就再没见过vkill了~
作者: myzwd    时间: 2009-3-20 19:09     标题: 回复 10楼 的帖子

这么好的作品你早该发了。谢谢。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2