wangshuping42 当前离线
四级士官
@echo off&title 猜数字游戏 QQ:137563876 mode con: cols=55 lines=40 for %%i in (n m r a0 a1 a2 a3 a4 a5 a6 a7 a8 a9) do (set %%i=0) setlocal enabledelayedexpansion echo ┌─────────────────────┐ echo │ 规则说明 │ echo └─────────────────────┘ echo │首先,本程序在打开时会自动使用0~9这10个数 │ echo ────────────────────── echo │生成一个随机的4位数,且每个数字只使用 1 次│ echo ────────────────────── echo │,这个数是不会显示出来的。在你输入一个4 位│ echo ────────────────────── echo │数之后,系统会自动将它与系统初始生成的随机│ echo ────────────────────── echo │4 位数相比较。在个、十、百、千位上,每猜中│ echo ────────────────────── echo │一位,正确数加1;若猜中数字,但数字所在位 │ echo ────────────────────── echo │不对(即数字顺序不对),则位置错误数加1。 │ echo ────────────────────── echo │你猜测的历史记录将会显示在列表中 ,你可以 │ echo ────────────────────── echo │根据你的猜测记录来推测正确的数字。 │ echo ────────────────────── echo │注意:你不能输入含重复数字的4位数。 │ echo ────────────────────── echo │ 准备好了吗?按任意键开始游戏!! │ echo └─────────────────────┘ pause>nul cls set "f=┌───────────────────────┐" set "h=│猜测记录│ 数字 │ 正确 │ 顺序错误 │" set "i= ────────────────────────" echo %f%&echo %h%&echo %i% ::随机生成数字不重复的4位数 set u=1 set num0=10 :again set /a num%u%=%random%%%10 set /a v=u-1 for /l %%i in (1 1 %v%) do (if !num%%i!==!num%u%! goto :again) if %u% lss 4 set /a u+=1&goto :again set ans=%num1%%num2%%num3%%num4% ::计算随机数字中0~9每个数字的个数 for /l %%i in (0 1 9) do ( for %%j in (%num1% %num2% %num3% %num4%) do ( if %%j==%%i set /a a%%i=a%%i+1 ) ) ::输入猜测数并获取每个位上的数 :input set t=1 set ent= set /p "ent=│输入你猜测的有效4位数(超过则截取前4位):" set "t4=%ent:~3,1%" if not defined t4 goto :input set "t1=%ent:~0,1%" set "t2=%ent:~1,1%" set "t3=%ent:~2,1%" ::检测输入是否正确(是否有重复数字、输入的是否全是数字) for /l %%i in (1 1 3) do ( set /a ii=%%i+1 for /l %%j in (!ii! 1 4) do ( if "!t%%i!"=="!t%%j!" goto :input ) ) :te set "t0=!t%t%!" for /l %%i in (0 1 9) do (if "%t0%"=="%%i" set wr=true) if defined wr (set /a t+=1) else (goto :input) set wr= if %t% lss 5 goto :te set /a num0-=1 ::计算猜对个数 cls for /l %%i in (1 1 4) do ( for /l %%j in (%%i 1 %%i) do ( if "!t%%i!"=="!num%%j!" set /a n+=1 ) ) ::计算输入数字中0~9每个数字的个数 for /l %%i in (0 1 9) do ( for %%j in (%t1% %t2% %t3% %t4%) do ( if %%j==%%i (set /a b%%i=b%%i+1) ) ) ::计算位置错误个数 for /l %%i in (0 1 9) do ( if !a%%i! gtr 0 (if !b%%i! gtr 0 (set /a m=m+!a%%i!)) ) set /a g=%m%-%n% ::输出猜测记录 set /a r+=1 set /a s=r if %r% lss 10 set "s=0%r%" set r%r%=│ 第%s%组 │ %t1% %t2% %t3% %t4% │ %n% │ %g% │ echo %f% echo %h% echo %i% for /l %%i in (1 1 %r%) do (echo !r%%i!&echo %i%) for %%i in (m n g b0 b1 b2 b3 b4 b5 b6 b7 b8 b9) do (set %%i=0) if "%ans%"=="%ent%" set zz= 猜对啦,你好厉害哦!!!! &goto :right if "%num0%"=="0" set zz=还猜不对啊?笨哪!正确答案是:%ans% &goto :right goto :input :right echo ┌───────────────────────┐ echo │ %zz% │ echo └───────────────────────┘ pause>nul复制代码
TOP
batman 当前离线
考官
荣誉版主
ppmath 当前离线
列兵
wangxiulin (路过~~!)当前离线
web 当前离线
中尉
狱渊 当前离线