Board logo

标题: 批处理小游戏:猜数字 [打印本页]

作者: wangshuping42    时间: 2011-4-25 17:25     标题: 批处理小游戏:猜数字

本帖最后由 wangshuping42 于 2011-4-25 17:29 编辑

囧,原创区发不了,没权限。发到这里来,算是转载自己的,哈哈
  1. @echo off&title 猜数字游戏 QQ:137563876
  2. mode con: cols=55 lines=40
  3. for %%i in (n m r a0 a1 a2 a3 a4 a5 a6 a7 a8 a9) do (set %%i=0)
  4. setlocal enabledelayedexpansion
  5. echo ┌─────────────────────┐
  6. echo │               规则说明                   │
  7. echo └─────────────────────┘
  8. echo │首先,本程序在打开时会自动使用0~9这10个数 │
  9. echo  ──────────────────────
  10. echo │生成一个随机的4位数,且每个数字只使用 1 次│
  11. echo  ──────────────────────
  12. echo │,这个数是不会显示出来的。在你输入一个4 位│
  13. echo  ──────────────────────
  14. echo │数之后,系统会自动将它与系统初始生成的随机│
  15. echo  ──────────────────────
  16. echo │4 位数相比较。在个、十、百、千位上,每猜中│
  17. echo  ──────────────────────
  18. echo │一位,正确数加1;若猜中数字,但数字所在位 │
  19. echo  ──────────────────────
  20. echo │不对(即数字顺序不对),则位置错误数加1。 │
  21. echo  ──────────────────────
  22. echo │你猜测的历史记录将会显示在列表中 ,你可以 │
  23. echo  ──────────────────────
  24. echo │根据你的猜测记录来推测正确的数字。        │
  25. echo  ──────────────────────
  26. echo │注意:你不能输入含重复数字的4位数。       │
  27. echo  ──────────────────────
  28. echo │     准备好了吗?按任意键开始游戏!!     │
  29. echo └─────────────────────┘
  30. pause>nul
  31. cls
  32. set "f=┌───────────────────────┐"
  33. set "h=│猜测记录│     数字     │  正确  │ 顺序错误 │"
  34. set "i= ────────────────────────"
  35. echo %f%&echo %h%&echo %i%
  36. ::随机生成数字不重复的4位数
  37. set u=1
  38. set num0=10
  39. :again
  40. set /a num%u%=%random%%%10
  41. set /a v=u-1
  42. for /l %%i in (1 1 %v%) do (if !num%%i!==!num%u%! goto :again)
  43. if %u% lss 4 set /a u+=1&goto :again
  44. set ans=%num1%%num2%%num3%%num4%
  45. ::计算随机数字中0~9每个数字的个数
  46. for /l %%i in (0 1 9) do (
  47. for %%j in (%num1% %num2% %num3% %num4%) do (
  48. if %%j==%%i set /a a%%i=a%%i+1
  49. )
  50. )
  51. ::输入猜测数并获取每个位上的数
  52. :input
  53. set t=1
  54. set ent=
  55. set /p "ent=│输入你猜测的有效4位数(超过则截取前4位):"
  56. set "t4=%ent:~3,1%"
  57. if not defined t4 goto :input
  58. set "t1=%ent:~0,1%"
  59. set "t2=%ent:~1,1%"
  60. set "t3=%ent:~2,1%"
  61. ::检测输入是否正确(是否有重复数字、输入的是否全是数字)
  62. for /l %%i in (1 1 3) do (
  63. set /a ii=%%i+1
  64.   for /l %%j in (!ii! 1 4) do (
  65.      if "!t%%i!"=="!t%%j!" goto :input
  66. )
  67. )
  68. :te
  69. set "t0=!t%t%!"
  70. for /l %%i in (0 1 9) do (if "%t0%"=="%%i" set wr=true)
  71. if defined wr (set /a t+=1) else (goto :input)
  72. set wr=
  73. if %t% lss 5 goto :te
  74. set /a num0-=1
  75. ::计算猜对个数
  76. cls
  77. for /l %%i in (1 1 4) do (
  78.   for /l %%j in (%%i 1 %%i) do (
  79.      if "!t%%i!"=="!num%%j!" set /a n+=1
  80. )
  81. )
  82. ::计算输入数字中0~9每个数字的个数
  83. for /l %%i in (0 1 9) do (
  84. for %%j in (%t1% %t2% %t3% %t4%) do (
  85. if %%j==%%i (set /a b%%i=b%%i+1)
  86. )
  87. )
  88. ::计算位置错误个数
  89. for /l %%i in (0 1 9) do (
  90. if !a%%i! gtr 0 (if !b%%i! gtr 0 (set /a m=m+!a%%i!))
  91. )
  92. set /a g=%m%-%n%
  93. ::输出猜测记录
  94. set /a r+=1
  95. set /a s=r
  96. if %r% lss 10 set "s=0%r%"
  97. set r%r%=│ 第%s%组 │    %t1% %t2% %t3% %t4%   │   %n%    │     %g%    │
  98. echo %f%
  99. echo %h%
  100. echo %i%
  101. for /l %%i in (1 1 %r%) do (echo !r%%i!&echo %i%)
  102. for %%i in (m n g b0 b1 b2 b3 b4 b5 b6 b7 b8 b9) do (set %%i=0)
  103. if "%ans%"=="%ent%" set zz=      猜对啦,你好厉害哦!!!!   &goto :right
  104. if "%num0%"=="0" set zz=还猜不对啊?笨哪!正确答案是:%ans% &goto :right
  105. goto :input
  106. :right
  107. echo ┌───────────────────────┐
  108. echo │     %zz%      │
  109. echo └───────────────────────┘
  110. pause>nul
复制代码

作者: wangshuping42    时间: 2011-4-25 17:33

貌似贴代码有时候空格会被吃掉,以防万一贴个txt上来
作者: batman    时间: 2011-4-25 19:04

楼主先看看这个贴子:
http://www.bathome.net/viewthrea ... =%CE%C4%C7%FA%D0%C7
作者: ppmath    时间: 2011-5-24 17:51

蛮好玩的,吸血楼主。
作者: wangxiulin    时间: 2011-7-17 22:10

一样都是没权限~
作者: web    时间: 2012-10-15 22:23

头疼的无聊
作者: 狱渊    时间: 2013-4-20 13:10

我不会玩啊




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