2013-08-25 59 views
0

我在本網站搜索了我的問題,但沒有找到解決問題的方法。比較批處理文件中的兩個數字

的系統給出了一個隨機數的播放機和用於計算機,從2至12

這具有3個部分,如果X大於Y,如果X較小比Y,和當X是相同Y.

當我開始.bat,它的偉大工程,我選擇Play Game,我進入投注(20例),但是當我開始這個過程中,窗口關閉,我不能看它寫。我可以看到一些閃爍的文字,我已經看到「你的」和「語法」,但它消失得非常快。

我真的確定它的工作原理,因爲當我刪除3 if if if的東西時,它會顯示我的錢,賭注,統計數據和所有內容,我甚至可以用我寫的'祕籍'來減少或增加它。

所以,在這裏,它是:

set /p setbet=Please type a number to select bet: 
if "%setbet%"=="1" set bet=20 
if "%setbet%"=="2" set bet=50 
if "%setbet%"=="3" set bet=100 
if "%setbet%"=="4" set bet=150 
if "%setbet%"=="5" set bet=200 
if "%setbet%"=="6" set bet=250 
if "%setbet%"=="7" set bet=300 
echo. 
echo Your bet is %bet%. 
echo. 
pause 
cls 
set /a money-=bet 
set /a playernum=%random% %%12 +2 
set /a enemynum=%random% %%12 +2 
echo. 
echo You roll:  %playernum% 
echo Enemy rolls:  %enemynum% 
echo. 
if %playernum% LSS %enemynum% 
(
echo Enemy wins. Please try again. 
echo Your current money is %money%. 
echo You lost %bet% money. 
echo. 
pause 
goto INTRO 
) 
if %enemynum% LSS %playernum% 
(
set /a money+=bet*2 
echo You win. 
echo Your current money is %money%. 
echo You won %bet% money. 
echo. 
pause 
goto INTRO 
) 
if %enemynum% EQU %playernum% 
(
set /a money+=bet 
echo It's a tie. 
echo You won the bet (%bet%), but your money didn't changed. 
echo Your money is now %money%. 
echo. 
pause 
goto INTRO 

謝謝!

回答

3

1)忘記關閉您的最後一個小括號

2)語法錯誤是在這裏:

if %enemynum% EQU %playernum% 
(

它應該是:if %enemynum% EQU %playernum% (

3)貨幣變量的值顯示時出錯。

它是由兩個事實引起的: - >在FOR或IF內部,變量在執行之前而不是在執行期間「展開」。 (expanded =變量被其值取代)

爲了更改變量的值並在同一個循環中使用它,您應該使用延遲表達式。

您必須在代碼的開頭編寫SETLOCAL ENABLEDELAYEDEXPANSION,並且應該延遲擴展的變量應該包含感嘆號而不是百分號。

所以echo Your current money is %money%.成爲echo Your current money is !money!.

4)您必須逃不出你的括號在相同的情況下: echo You won the bet ^(%bet%^) but your money didn't changed.

5)你沒有把標籤INTRO,所以你goto INTRO將失敗

+0

謝謝,這是一個真正有用的答案,它解決了問題。 (轉到INTRO的代碼,但對不起,我忘了複製該代碼) – 64x

0

您應該搜索delayed expansionsetlocal enabledelayedexpansion)並計算括號:每個開口括號需要一個結束符(我知道有些例外,但不在這裏)。 if之後的前括號必須與if一樣位於同一行上。 if解析器將停在此處:%bet%),因爲這是上次打開後的第一個右括號。

+0

謝謝,這+ Julien的回答很有幫助。謝謝Endoro呢! – 64x