键盘输入游戏错误

时间:2017-04-26 19:16:16

标签: batch-file numpad

我正在尝试创建一个数字打字游戏,以帮助训练我和我的同事的任何其他人看到一个数字,并更快地键入它没有错误。所以我决定在记事本++中做一个快速游戏,因为我也试图制作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'不被视为内部或外部命令, 可操作程序或批处理文件。

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

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

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

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

2 个答案:

答案 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

我不能完全感谢你帮助我理解我开始时的混乱