2014-01-31 66 views
1

我一直在批量編碼和東西有點樂趣,我一直在做一個有多個選擇和結局的小文本冒險遊戲。在某個時候,你可以選擇成爲總統。爲什麼我的遊戲的批處理代碼不工作?

:lvl1 
cls 
color 0a 
echo You awake in a dark room. 
echo What do you do? 
echo. 
echo 1) Take the nearest torch. 
echo 2) Do nothing. 
echo 3) Become the president. 
echo 4) Wait, isn't this exactly like The Adventure 1? 
set /p answer= 

if %answer% == 1 goto lvl2-1 
if %answer% == 2 goto bordem 
if %answer% == 3 goto presidency 
if %answer% == 4 goto yes 

基本上我有一個裏面的笑話這裏,因爲這是續集,它是一樣的開頭。 所以你可以選擇總統選項,這是它的代碼。

:presidency 
cls 
color 0a 
echo You decided to become the President 
echo What do you do now? 
echo. 
echo 1) RAISE TAXES! 
echo 2) MAKE A SPEECH! 
echo 3) NOTHING! 
echo 4) DECREASE TAXES! 
set /p answer= 

if %answer% == 1 goto really? 
if %answer% == 2 goto speech 
if %answer% == 3 goto uselesspresident 
if %answer% == 4 goto thankyouforthat 

現在,您應該可以選擇第三個選項,它會帶您到結尾之一。 但我試過在批處理版本中這樣做,但是我看到了無用的屏幕截圖,然後它將我放回到第一級(lvl1)。 下面是uselesspresident代碼:

:uselesspresident 
cls 
color 0a 
echo You did nothing as the president. 
echo Worst. President. Ever. 
echo Achievement unlocked!: Lazy ass. 
echo USELESS PRESIDENT ENDING 
echo Play more? 
echo (y/n) 
set /p answer= 

if %answer% == y goto lvl1 
if %answer% == n goto menu 

我看不到你什麼不好的代碼,說不定可以嗎? 我還沒有測試過我的所有遊戲,所以如果遇到更多的編碼問題,我會將其發佈到本論壇。 謝謝,如果你能找到問題。

編輯:我想通了。我不敢相信我沒有早點想到它,但是在這裏。 我是從文本文件編輯,而不是批量本身,當我意識到這一點:

echo (y/n) 
set /p answer 

if %answer% == y goto lvl1 
if %answer% == n goto menu 

這是它以前我固定它,所以我加了等號(=),並固定起來,然後保存。 但我沒有將它導出爲.bat,所以.bat仍然是相同的,但是文本文件已被編輯。 我真的需要記住編輯.bat文件,而不是單獨編輯文本文件。

+0

y/n的簡單測試適用於我(winXP)。我建議註釋掉任何'cls',並且在':uselesspresident'中首先啓用'echo on'。它可能會暗示發生了什麼事情。或者,你有CAPS-LOCK嗎? 'Y!= y',所以你可能還需要測試'Y'和'N'。 – icabod

+0

每個'set/p answer ='放置這個參數以初始化變量'set「answer =」' – foxidrive

回答

0

我覺得

if %answer% == "y" goto lvl1 
if %answer% == "n" goto menu 
+0

這隻有在用戶在提示符處輸入'「y」'或'「n」'時纔會匹配... at至少它對我有用。它只是輸入'y'或'n'不匹配。 – icabod

+2

我想,他的意思是「如果」%回答%「==」y「轉到......」。 – Stephan

3

假設的問題是輸入值的情況下,你可以嘗試的東西更換測試類似如下:

echo (y/n) 
set /p answer= 
if /I %answer% EQU y echo yes 
if /I %answer% EQU n echo no 

當然更換echo「與你的goto陳述。這使得命令擴展被啓用(它們應該是默認設置),並且基本上執行不區分大小寫的比較。

相關問題