Batch file numberpad键入游戏错误
我正在尝试创建一个数字输入游戏,以帮助训练我和我的同事中的任何人看到一个数字,并在没有错误的情况下更快地输入它。所以我决定用notepad++做一个快速的游戏,因为我也想让CYOA选择你自己的冒险故事,但这是另一篇文章。我已经在下面发布了我的代码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
@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命令行