Board logo

标题: [游戏娱乐] 批处理有趣的心形图案 [打印本页]

作者: lhjoanna    时间: 2008-11-11 02:18     标题: 批处理有趣的心形图案

这是一个签名,我给大概改了一下。大家试试看啊,记得输入时一定要汉语哦。

经过Batcher提醒,把更新信息列出。
更新历史:2008.11.11  可以支持字母,数字,汉字以及之间的相互组合(这里要谢谢youxi01的建议)!
               2008.11.12  解决了输入为空输出缺少空格的问题(该问题见八楼)。
为方便比较,代码添加在下面。欢迎大家提供意见!
  1. @echo off
  2. rem 同甘共苦  誠心誠意  珍貴友誼 分享喜悅
  3. setlocal enabledelayedexpansion
  4. set a=◢█◣◢█◣
  5. set b=█        █
  6. set c=◥████◤
  7. set d=  ◥██◤
  8. set e=   ◥◤
  9. set /p cy="请输入你最喜欢的四个成语用(用空格隔开):"
  10. :a
  11. set /a num=0
  12. for %%b in (%cy%) do (
  13.    set /a num+=1
  14.    set a!num!=%%b
  15. )
  16. set "str1=        "
  17. set /a _color=!random!%%15
  18. set str=123456789abcedf
  19. color 0!str:~%_color%,1!
  20. for /l %%i in (1 1 3) do (
  21.     set /a s=!random!%%4+1
  22.     set b=█!a%s%!█
  23.     for  %%j in (a b c d e) do (
  24.         set str=
  25.         if "%%j" equ "b" set "str= "
  26.         if "%%j" equ "d" set "str=  "
  27.         if "%%j" equ "e" set "str=     "
  28.         if %%i equ 2 (echo      !%%j!  !str!!%%j!) else echo             !%%j!
  29.     )
  30. )
  31. ping -n 1 127.1>nul
  32. ping -n 1 127.1>nul
  33. cls
  34. goto a
复制代码
2008.11.12更新后:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set a=◢█◣◢█◣
  4. set b=█        █
  5. set c=◥████◤
  6. set d=  ◥██◤
  7. set e=   ◥◤
  8. set /p cy="请输入你最喜欢的四个成语用(用空格隔开):"
  9. :a
  10. set /a num=0
  11. for %%b in (%cy%) do (
  12.    set /a num+=1
  13.    set a!num!=%%b
  14. )
  15. set /a _color=!random!%%15
  16. set str=123456789abcedf
  17. color 0!str:~%_color%,1!
  18. for /l %%i in (1 1 3) do (
  19.     set /a s=!random!%%4+1
  20.     if "!a%s%!"=="" (set kong=0)  else call :length !a%s%! %kong%
  21.     set /a s1=8-!kong!
  22.     set /a s1=s1/2
  23.     set /a s2=8-!s1!-!kong!
  24.     call :ko !s1! &set str1=!k!
  25.     call :ko !s2! &set str2=!k!
  26.     set b=█!str1!!a%s%!!str2!█
  27.     for %%j in (a b c d e) do (
  28.         set str=
  29.         if "%%j" equ "d" set "str=  "
  30.         if "%%j" equ "e" set "str=    "
  31.         if %%i equ 2 (echo      !%%j!  !str!!%%j!) else echo             !%%j!
  32.     )
  33. )
  34. ping -n 1 127.1>nul
  35. ping -n 1 127.1>nul
  36. cls
  37. goto a
  38. :length
  39. set sss=a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9
  40. set var=%1
  41. set n=0
  42. for /l %%i in (0 1 10) do (
  43.    set flag=1
  44.    if "!var:~%%i,1!"=="" set kong=!n! && goto :eof
  45.       for %%b in (%sss%) do (
  46.          if /i "!var:~%%i,1!" equ "%%b" (set flag=0 )
  47.       )
  48.    if !flag! equ 1 ( set /a n+=2 )  else set /a n+=1
  49. )
  50. :ko
  51. set k=
  52. if "%1"=="" goto :eof
  53. for /l %%i in (1 1 %1) do set "k=!k! "
复制代码

作者: pusofalse    时间: 2008-11-11 02:47

有创意、、、 是否更应该发展实用的批处理。。。
作者: lhjoanna    时间: 2008-11-11 02:59

恩,谢谢版主提醒啊。最近几天一直在研究学习各种各样的图案。恩,我会不断的向实用性发展,不断的学习前辈高手们的代码的。
作者: jellyhk    时间: 2008-11-11 11:59

恩厉害啊!
是不是无聊的时候想的?
作者: youxi01    时间: 2008-11-11 13:43

提个建议:
输入内容不应该仅仅局限于成语
可以输入任意4字以内文字,如:人名等,呵呵

代码最好再修改下,至于输入任意<四字符的字符串的对齐可以填充空格,再截取来实现!
作者: rat    时间: 2008-11-11 14:14

很好。

可以上边三个心,中间两个,下边一个
作者: hlzj88    时间: 2008-11-11 22:23

狠好看的,有创意,慢慢学习
作者: lhjoanna    时间: 2008-11-11 23:36

谢谢大家的鼓励啊,我会不断努力的。
经过youxi01的提醒,现在修改了一下代码。可以支持字母,数字以及汉字,可以小于8个字符(汉语4个),比如可以输入  123  abcd  同甘共苦 1朋友2    等类似字符。现附上代码:
  1. @echo off
  2. rem 同甘共苦  誠心誠意  珍貴友誼 分享喜悅
  3. setlocal enabledelayedexpansion
  4. set a=◢█◣◢█◣
  5. set b=█        █
  6. set c=◥████◤
  7. set d=  ◥██◤
  8. set e=   ◥◤
  9. set /p cy="请输入你最喜欢的四个成语用(用空格隔开):"
  10. :a
  11. set /a num=0
  12. for %%b in (%cy%) do (
  13.    set /a num+=1
  14.    set a!num!=%%b
  15. )
  16. set /a _color=!random!%%15
  17. set str=123456789abcedf
  18. color 0!str:~%_color%,1!
  19. for /l %%i in (1 1 3) do (
  20.     set "kong_=        "
  21.     set /a s=!random!%%4+1
  22.     call :length !a%s%! %kong%
  23.     set /a s1=8-!kong!
  24.     set /a s1=s1/2
  25.     set /a s2=8-!s1!-!kong!
  26.     call :ko !s1! &set str1=!k!
  27.     call :ko !s2! &set str2=!k!
  28.     set b=█!str1!!a%s%!!str2!█
  29.     for %%j in (a b c d e) do (
  30.         set str=
  31.         if "%%j" equ "d" set "str=  "
  32.         if "%%j" equ "e" set "str=    "
  33.         if %%i equ 2 (echo      !%%j!  !str!!%%j!) else echo             !%%j!
  34.     )
  35. )
  36. ping -n 1 127.1>nul
  37. ping -n 1 127.1>nul
  38. cls
  39. goto a
  40. :length
  41. set sss=a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9
  42. set var=%1
  43. set n=0
  44. for /l %%i in (0 1 10) do (
  45.    set flag=1
  46.    if "!var:~%%i,1!"=="" set kong=!n! && goto :eof
  47.       for %%b in (%sss%) do (
  48.          if "!var:~%%i,1!" equ "%%b" (set flag=0 )
  49.       )
  50.    if !flag! equ 1 ( set /a n+=2 )  else set /a n+=1
  51. )
  52. :ko
  53. set k=
  54. if "%1"=="" goto :eof
  55. for /l %%i in (1 1 %1) do set "k=!k! "
复制代码
有一个问题还请高手解答下:按理说什么都不输直接按回车的话,应该出现!b!中间为8个空格的情况,可实际情况却是少了一个。在下面一步一步静态运行没发现什么异常啊,是不是漏了什么?


此问题已解决,更新信息在顶楼说明!!

[ 本帖最后由 lhjoanna 于 2008-11-12 18:44 编辑 ]
作者: Batcher    时间: 2008-11-11 23:40     标题: 回复 8楼 的帖子

建议把更新情况在顶楼说明一下
作者: lhjoanna    时间: 2008-11-11 23:48

原帖由 Batcher 于 2008-11-11 23:40 发表
建议把更新情况在顶楼说明一下


更新信息已经列出,谢谢提醒!!
作者: Peking007    时间: 2009-2-27 17:26

不断的学习前辈高手们的代码的。
作者: vte8689    时间: 2010-12-14 22:03

不错。改下内容可送女友咯。。。
作者: txwhjsw    时间: 2010-12-24 16:18

有创意、、、 是否更应该发展实用的批处理。。。




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