2013-08-25 61 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