Board logo

标题: [游戏娱乐] 批处理版文曲星猜字游戏 [打印本页]

作者: batman    时间: 2008-8-29 15:00     标题: 批处理版文曲星猜字游戏

呵呵,以前写的,发给大家来玩玩。。。
  1. @echo off&color 1f&mode con cols=55 lines=30
  2. setlocal enabledelayedexpansion
  3. title 猜数字游戏 batman
  4. echo.&echo.
  5. echo.&echo               ---- 游戏规则 ----
  6. echo.&echo    程序会自动生成一组四个互不相同的0-9内的整数,
  7. echo.&echo    请你根据猜测和判断,每次输入一组四个互不相同
  8. echo.&echo    0-9内的整数,中间请用空格格开,如:1 2 3 4,
  9. echo.&echo    程序会将你每次输入的数组与其生成的数组进行比
  10. echo.&echo    较,并将比较的结果输出屏幕上以帮助你进一步的
  11. echo.&echo    判断,直到你所输入的数组与其生成的数组的数值
  12. echo.&echo    和次序完全相同,或你已用完了所有的猜测机会。
  13. echo.&echo    如果你已经看懂了规则,请按任意键开始本次游戏。
  14. set var=A&pause>nul
  15. :begin
  16. set /a a=%random%%%10
  17. for %%a in (%var%) do if %%a equ %a% goto begin
  18. set var=%var% %a%
  19. if "%var:~8%" equ "" goto begin
  20. set var=%var:~2%&set m=0
  21. :again
  22. set /a n=0,v=0,ws=0,s=0,t=10-m
  23. if %t% equ 0 goto end
  24. cls&echo.&echo    请注意你总共只有10次机会,现在还剩下%t%次机会
  25. if "%m%" neq "0" for /l %%i in (1,1,%m%) do echo.&echo !_%%i!
  26. set codes=A
  27. echo.&set /p code=   请在此输入:
  28. echo %code: =%|findstr "[^0-9]"&&goto wrong
  29. for %%a in (%code%) do (
  30.     for %%i in (!codes!) do if %%i equ %%a goto wrong
  31.     set codes=!codes! %%a
  32.     set /a n+=1
  33. )
  34. if %n% neq 4 goto wrong
  35. set codes=%codes:~2%
  36. for %%i in (%codes%) do (
  37.     set str=%%i
  38.     if "!str:~1!" neq "" goto wrong
  39. )
  40. for %%a in (%var%) do (
  41.     set /a v+=1,x=0
  42.     for %%i in (%codes%) do (
  43.         set /a x+=1
  44.         if %%a equ %%i if !x! equ !v! (
  45.            set /a ws+=1,s+=1
  46.            ) else (
  47.            set /a s+=1
  48.         )
  49.     )
  50. )
  51. set /a m+=1
  52. if "%var%" equ "%codes%" goto suc
  53. set _%m%=  %codes%中数值正确的有%s%个,其中位置数值都正确的有%ws%个&goto again
  54. :wrong
  55. cls
  56. echo.&echo     所输入的非合法十进制整数,或数值不合要求,
  57. echo.&echo     或有重复数,或输入的数值个数不是4个。
  58. ping /n 2 127.1>nul&goto again
  59. :suc
  60. if %m% equ 1 cls&echo.&echo   不会吧,1次就搞定了,你是不是神仙下凡啊?&goto select
  61. if %m% leq 3 cls&echo.&echo   你真是聪明绝顶啊,只用%m%次就猜中了。&goto select
  62. if %m% leq 5 cls&echo.&echo   看来你还是很厉害,用了%m%次就猜中了。&goto select
  63. if %m% leq 9 cls&echo.&echo   呵呵,猜了%m%次,勉强过关了。&goto select
  64. if %m% equ 10 cls&echo.&echo   你太精明了,硬是把机会给用完成功过关。
  65. :select
  66. ping /n 3 127.1>nul
  67. cls&echo.&set select=&set /p select=  是否再来一次(是就输入y/Y,其它任意键退出):
  68. if /i "%select%" equ "y" (goto begin) else (goto exit)
  69. :end
  70. cls&echo.&echo   对不起你已经用完了所有的机会了。正确答案是%var%&goto select
  71. :exit
  72. ping /n 3 127.1>nul
复制代码

作者: wangwei4106    时间: 2008-8-29 15:18

呵呵
刚好需要这个,代码里的随机正是我要参考的……
先谢谢了……
作者: pusofalse    时间: 2008-8-29 15:25

这个好锻炼脑力。。。
作者: yslyxqysl    时间: 2008-8-29 18:46

比Verybat的代码简单。
作者: wxcute    时间: 2008-8-29 20:52

提个建议

在下面的第一行代码处加入第二行,输入时就可以不用输入空格了。
  1. echo.&set /p code=   请在此输入:
  2. set "code=%code:~0,1% %code:~1,1% %code:~2,1% %code:~3,1%"
复制代码





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