我正在尝试创建一个数字打字游戏,以帮助训练我和我的同事的任何其他人看到一个数字,并更快地键入它没有错误。所以我决定在记事本++中做一个快速游戏,因为我也试图制作CYOA(选择你自己的冒险)故事,但那是另一篇文章。我在下面发布了我的代码。
@ECHO OFF
:START
cls
echo num="%random%"
echo.
set /p inp=
if %inp% == %num% goto rght
if %inp% neq %num% goto wrng
:rght
echo.
echo CORRRECT
pause
GOTO START
:wro
echo.
echo wrong
pause
GOTO START
当我运行bat文件时,%random%生成的数字会打印出来,如果输入正确或错误的数字,我会得到这个
' wrng'不被视为内部或外部命令, 可操作程序或批处理文件。
然后继续:即使我键入了错误的数字
这是什么意思,我该如何解决这个问题?
下面链接的是我输入错误值后得到的确切消息更新
我添加了一个计时器,在输入后直接进入下一个数字,但工作正常但我的正确和错误答案的计数器都保持为0,无论输入的数量是对还是错。我基本上需要帮助理解为什么我的2个计数器不工作
@ECHO OFF
:START
CLS
color 07
SET "CORRECT=0"
SET "INCORRECT=0"
ECHO CORRECT %CORRECT%
ECHO INCORRECT %INCORRECT%
ECHO.
ECHO.
SET "num=%RANDOM%"
ECHO %num%
ECHO.
SET /P "INP= "
IF NOT "%INP%"=="%num%" GOTO WRNG
color 27
ECHO.
ECHO CORRECT
SET /a CORRECT=CORRECT+1
GOTO TIMER
: WRNG
color 47
ECHO.
ECHO INCORRECT
SET /a INCORRECT=INCORRECT+1
GOTO TIMER
: TIMER
set /a time=1
: TM
ping localhost -n 2 >nul
set /a time=%time%-1
if %time%==0 (
goto START
)else goto TM
答案 0 :(得分:1)
您的主要问题是,您设置 ting num
只能回显并且您 GO TO 一个不存在的标签。您还可以稍微简化一下结构:
@ECHO OFF
:START
CLS
SET "num=%RANDOM%"
ECHO %num%
ECHO.
SET/P "INP= "
IF NOT "%INP%"=="%num%" GOTO WRNG
ECHO.
ECHO CORRRECT
PAUSE
GOTO START
:WRNG
ECHO.
ECHO WRONG
PAUSE
GOTO START
修改强>
根据我对您现在删除的修改的理解,这里有一个更新。
@ECHO OFF
SET/A "correct=incorrect=0"
:START
CLS
COLOR 07
SET "num=%RANDOM%"
ECHO.
ECHO SCORE - CORRECT %correct%, INCORRECT %incorrect%
ECHO.
ECHO %num%
ECHO.
SET /P "INP= "
ECHO.
IF "%INP%"=="%num%" (
COLOR 27
ECHO CORRECT
SET/A "correct+=1"
) ELSE (
COLOR 47
ECHO INCORRECT
SET/A "incorrect+=1"
)
PING -n 2 0.0.0.0 1>NUL
GOTO START
答案 1 :(得分:0)
我运行了你的代码,它的工作率为95%。我遇到的唯一问题是当我输入正确答案时,它正确地添加了1和不正确。虽然我喜欢整洁而且很好地组合你的代码版本。
我所做的就是将ping行的副本移动到IF和ELSE中,并且代码能够为正确或不正确的分数添加一个点。
@ECHO OFF
SET/A "correct=incorrect=0"
:START
CLS
COLOR 07
SET "num=%RANDOM%"
ECHO.
ECHO SCORE - CORRECT %correct%, INCORRECT %incorrect%
ECHO.
ECHO %num%
ECHO.
SET /P "INP= "
ECHO.
IF "%INP%"=="%num%" (
COLOR 27
ECHO CORRECT
SET/A "correct+=1"
PING -n 2 0.0.0.0 1>NUL
) ELSE (
COLOR 47
ECHO INCORRECT
SET/A "incorrect+=1"
PING -n 2 0.0.0.0 1>NUL
)
GOTO START
我不能完全感谢你帮助我理解我开始时的混乱