返回列表 发帖

[其他] 无需第三方,去掉用户在批处理等待时输入的东西

大家都知道,如果用户在一个批处理在等待时(比如显示某组号码5秒时)输入东西,等下set /p时,就会出现刚才输入的东西

这等于给了“记数字”玩家作弊的机会,比如以下代码:
@echo off
cls
set a=%random:~0,1%%random:~0,1%%random:~0,1%%random:~0,1%%random:~0,1%
echo 给你3秒记住这组数字:%a%
ping -n 4 127.1>nul
cls
set /p num=现在输入:
echo.
if "%a%"=="%num%" (echo 你输入对了) else (echo 你输入错了)
pause>nul
exitCOPY
要作弊是易如反掌的,我在批处理显示“给你3秒……”时输入数字,等下set /p时就写出来了……

为此我就写了一个代码,不完美但起码实现无三方去掉用户在批处理等待时输入的东西
@echo off
if "%1"=="apple" goto apple
if "%1"=="apple2" goto apple2
start /b "" %0 apple
start /b "" %0 apple2
echo 现在不能输入,需等待4秒……
ping -n 5 127.1>nul
echo abc>abc
cls
echo.
echo 现在按两次enter,看到enter: 时就输入
pause>nul
erase /f /q abc>nul 2>nul
erase /f /q abc2>nul 2>nul
set /p a=Enter:
echo.
echo 你输入了%a%
pause
exit
:apple
set /p =
if exist abc echo abc>abc2&exit
goto apple
:apple2
set /p = <nul
if exist abc2 exit
goto apple2COPY
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

发现代码可以更简单:
@echo off
if "%1"=="apple2" goto apple2
start /b "" %0 apple2
echo 现在不能输入,需等待4秒……
ping -n 5 127.1>nul
echo abc>abc2
cls
echo.
echo 现在按一次enter,看到enter: 时就输入
pause>nul
erase /f /q abc2>nul 2>nul
set /p a=Enter:
echo.
echo 你输入了%a%
pause
exit
:apple2
set /p = <nul
if exist abc2 exit
goto apple2COPY
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

突然发现自己摆了乌龙

原来…… 加一个pause>nul就行了……
@echo off
echo 现在不能输入,需等待4秒……
ping -n 5 127.1>nul
cls
echo.
echo 现在按一次enter,看到enter: 时就输入
pause>nul
set /p a=Enter:
echo.
echo 你输入了%a%
pause
exitCOPY
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

回复 4# CUer


    如果他真的要这样做,我也没有办法~ 反正这个游戏就是为了让人锻炼脑袋的~ 他这样做明显没有好处,浪费他的时间罢了
    这个代码就好比考试时禁止看书的规则,有好过没有,如果考生硬要作弊也没有办法啊~
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

回复 6# bluewing009


    对choice没好感,一按错就会吵死人……
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

回复 11# garyng


按照你们这么说,就是说这类游戏没有意义的?
算了…… 反正批处理就不是拿来做游戏的……
不喜欢就算了……
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

返回列表