Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file numberpad键入游戏错误_Batch File_Numpad - Fatal编程技术网

Batch file numberpad键入游戏错误

Batch file numberpad键入游戏错误,batch-file,numpad,Batch File,Numpad,我正在尝试创建一个数字输入游戏,以帮助训练我和我的同事中的任何人看到一个数字,并在没有错误的情况下更快地输入它。所以我决定用notepad++做一个快速的游戏,因为我也想让CYOA选择你自己的冒险故事,但这是另一篇文章。我已经在下面发布了我的代码 @ECHO OFF :START cls echo num="%random%" echo. set /p inp= if %inp% == %num% goto rght if %inp% neq %num% goto wrng :rght ec

我正在尝试创建一个数字输入游戏,以帮助训练我和我的同事中的任何人看到一个数字,并在没有错误的情况下更快地输入它。所以我决定用notepad++做一个快速的游戏,因为我也想让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,无论输入的正确或错误数是多少。我基本上需要帮助理解为什么我的两个计数器不工作

@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

您的主要问题是,您没有将num设置为任何值,只是对其进行了响应,而且您将使用一个不存在的标签。您还可以稍微简化结构:

@回音 :开始 CLS SET num=%RANDOM% 回显%num% 回响 设置/P输入= 如果不是%INP%==%num%GOTO WRNG 回响 回声校正 暂停 开始 :WRNG 回响 回音错误 暂停 开始 编辑

根据我对你现在删除的编辑的理解,这里有一个更新

@回音 设置/A正确=不正确=0 :开始 CLS 颜色07 SET num=%RANDOM% 回响 回音分数-正确%正确%,不正确%不正确% 回响 回显%num% 回响 设置/P输入= 回响 如果%INP%==%num% 颜色27 回音正确 设置/A正确+=1 其他的 颜色47 回声不正确 设置/A不正确+=1 PING-n20.0.0.01>NUL 开始
我已经运行了你的代码和它的作品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

我非常感谢您帮助我理解我开始时的混乱局面

如果您接受答案,我和未来的搜索将不胜感激。然而,自从我回答之后,你似乎完全改变了你的问题。从技术上来说,这应该是一个新问题。你的权利。我没有看到接受答案的复选标记。最好将代码的第二个版本作为一个新问题发布。感谢tipI更新了我的答案,以包含我认为您在现在删除的编辑问题中的意图。通过编写额外的ping命令并将其移动到if-else块中,计数器的代码没有改变。除了增加批处理文件的大小和破坏代码的外观之外,它什么也做不到。另外,由于您没有声明目标操作系统,在Vista和更新版本上,您可以使用>Nul Timeout 1替换Ping命令行