2017-04-26 104 views
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 
当我运行该批处理文件

,由%随机%打印生成的号码,如果你把正确或不正确的数字,我得到这个

“wrng”不被识别为一个内部或外部命令, 可操作的程序或批处理文件。

,然后继续:rght即使我在不​​正确的数字

这是什么意思?如何解决这个类型?

下面链接是确切的消息将不正确的值之后,我得到

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 

回答

1

你的主要问题是,你是不是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 
+0

混乱制定出更好的话,我可以期待 – Slovakolarik

+0

它会自己理解和未来的搜索,你应该接受的感觉回答。不过,自从我的回答以来,你似乎完全改变了你的问题。这在技术上应该是一个新问题。 – Compo

+0

你的权利。我没有看到复选标记接受答案。将第二个版本的代码作为新问题发布将是一个更好的主意。感谢您的提示 – Slovakolarik

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 

我不能感谢你足够康波帮助我让我开始与

+0

通过编写额外的ping命令并将它们移动到if else块中,关于计数器的代码没有改变。除了增加批处理文件的大小和破坏代码的外观之外,它什么都不做。另外需要注意的是,因为你没有说明你的目标OS_,在Vista和更新版本中,你可以用'> Nul Timeout 1'替换'Ping'命令行 – Compo