0

我正在尝试创建一个数字输入游戏,以帮助训练我和我的其他同事查看数字并更快地输入数字而不会出错。所以我决定用记事本++制作一个快速游戏,因为我也在尝试制作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' 不是内部或外部命令、可运行程序或批处理文件。

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

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

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

输入后错误

更新

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

2 回答 2

1

您的主要问题是您没有设置任何num内容,只是显它,并且您正在转到一个不存在的标签您还可以稍微简化结构:

    @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
于 2017-04-26T19:33:53.627 回答
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

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

于 2017-04-27T01:35:03.933 回答