2017-04-26 89 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