联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
CODE: [Copy to clipboard]@echo off ::code by youxi01@cmd_xp ::由原作品修改而来(http://post.baidu.com/f?kz=137898059),优化了部分代码。 REM 定义屏幕显示方式 title 猜数字游戏(共享版) color 1f mode con: cols=50 lines=25 :start cls echo ╔----------------------------------------╗ echo ┆ 猜数字游戏共享版 ┆ echo ┆ ┆ echo ┆ 说明:猜一个四位的随机数 ┆ echo ┆ ┆ echo ┆ 优化了部分代码,并对输入进行了过滤 ┆ echo ╚----------------------------------------╝ echo. echo 请选择游戏难度 echo ------------------------------------------ echo 1、最低难度 echo 2、中等难度 echo 3、最高难度 REM 生成系统数字,默认为四位数。采用这种方式,是为了增加随机性。 set/a rnd=%random% %% 8+1 %=设置系统数字的第一位=% set Snum=%rnd%%random:~-1%%random:~-1%%random:~-1% set/a flag=20 %=初始化猜数的次数=% call :check 1 3 start REM 初始显示内容; set SS=1%time:~6,2% set MM=1%time:~3,2% set /a Min=1000,Max=9999,flag=20,stime=60,MM=%MM%-100,SS=%SS%-100 set TipInfo=未定 set life=%flag% goto :%input% :1 %=========容易等级==============% cls echo ╔----------------------------------------╗ echo ┆ 猜数字游戏共享版 ┆ echo ┆ ┆ echo ┆ 难度等级:容易 ┆ echo ┆ ┆ echo ┆ 数值在:%Min% - %Max%之间 ┆ echo ┆ ┆ echo ┆ 提示:%TipInfo% 剩余生命:%life% ┆ echo ╚----------------------------------------╝ call :check %Min% %Max% 1 call :CheckNum goto :1 :2 %==============中等难度======% cls echo ╔----------------------------------------╗ echo ┆ 猜数字游戏共享版 ┆ echo ┆ ┆ echo ┆ 难度等级:中等 ┆ echo ┆ ┆ echo ┆ 提示:%TipInfo% 生命:%life% ┆ echo ╚----------------------------------------╝ call :check 1000 9999 2 call :CheckNum goto :2 :3 %============最高难度,有时间限制===============% cls echo ╔----------------------------------------╗ echo ┆ 猜数字游戏共享版 ┆ echo ┆ ┆ echo ┆ 难度等级:困难 ┆ echo ┆ ┆ echo ┆ 提示:%TipInfo% 生命:%life% ┆ echo ┆ ┆ echo ┆ 还剩下%stime%秒 ┆ echo ╚----------------------------------------╝ call :check 1000 9999 3 call :CheckNum set SS_=1%time:~6,2% set MM_=1%time:~3,2% set/a MM_=%MM_%-100-%MM%,SS_=%SS_%-100-%SS% set/a stime=60-%MM_%*60-%SS_% if %stime% LEQ 0 echo 超时 & pause>nul & goto :start set stime=0%stime% & set stime=%stime:~-2%%=============补齐对象=================% goto :3 pause>nul :check MinNum MaxNum Tag1 set "input=" & echo. set /p input=请输入一个[ %1-%2 ]的数字: Rem ==============过滤特殊字符=============================== echo "%input%" |findstr "[<>&~`@#$%^*()-+=_,.?/\|':;]" >nul && ( echo 请输入 %1 到 %2 的纯数字 & pause>nul & goto :%3) Rem ==============验证是否是指定区间的纯数字================= set var=0 set /a var=%input% >nul 2>nul if "%var%"=="0" echo 请输入 %1 到 %2 的纯数字 & pause>nul & goto :%3 Rem ==========以上利用了set /a 的特殊性====================== if %input% LSS %1 echo 请输入 %1 到 %2 的纯数字 & pause>nul & goto :%3 if %input% GTR %2 echo 请输入 %1 到 %2 的纯数字 & pause>nul & goto :%3 set/a flag-=1 if %flag% LSS 1 echo 超出生命限制! & pause>nul & goto :start goto :eof :CheckNum if %input% EQU %Snum% echo. & echo 恭喜你,猜中了!& pause>nul & exit if %input% GTR %Snum% ( set TipInfo=大了 if %input% LSS %Max% set Max=%input%) if %input% LSS %Snum% ( set TipInfo=小了 if %input% GTR %Min% set Min=%input%) set life=0%flag% set life=%life:~-2%