数字键盘打字游戏错误

numberpad typing game error

我正在尝试创建一个数字打字游戏来帮助训练我和我的同事中的任何其他人看到数字并更快地输入它而不会出错。所以我决定在 notepad++ 中制作一个快速游戏,因为我也在尝试制作 CYOA(选择你自己的冒险)故事,但那是另一个 post。我在下面 post 编辑了我的代码。

@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' 未被识别为内部或外部命令, 可运行的程序或批处理文件。

然后继续 :right 即使我输入了错误的数字

这是什么意思,我该如何解决?

下面的链接是我输入错误值后收到的确切消息

error after input

更新

我添加了一个计时器,它在输入后直接进入下一个数字,工作正常,但我的正确和错误答案计数器都保持为 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

你的主要问题是你没有 setting num 只是 echoing 它而且你're GOing 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

我有 运行 你的代码及其工作 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

我非常感谢你帮助我理解我开始的混乱