2017-05-08 60 views
0

所以,我遇到了幾個問題。批量RPG:撲滅圈損壞

  1. 當TutorialFight運行時,它幾乎可以像我想的那樣工作,除了英雄永遠不會被擊中。
  2. 選擇Magic或Run時,if語句不顯示迴響,並進入TutorialError。

注意:%stat%是英雄的屬性,而%estat%是敵人的屬性。

:TutorialIntro 
    title Tutorial^^! 
    cls 
    set /a ehealth=15 
    set /a emana=15 
    set /a ebstat=5 
    set /a eostat=5 
    set /a ecstat=5 
    set /a elevel=1 
    set /a health=15 
    set /a mana=15 
    set /a bstat=5 
    set /a ostat=5 
    set /a cstat=5 
    set /a level=1 
    echo You have run into a 
    echo Level %elevel% Sock Puppet. 
    echo -I made this from a combination of a sock, glue, and some paper. 
    echo If you lose to this thing, I'm not looking you in the eye again. 
    echo You know, if I could actually look at you in the first place. 
    echo. 
    echo Level %level% Hero  
    echo %health% HP   
    echo %mana% MP    
    echo %bstat% Brawn      
    echo %ostat% Obscurity  
    echo %cstat% Cowardice  
    pause 
    goto Tutorial 

    :Tutorial 
    title Fight^^! 
    cls 
    if %ehealth% leq 0 goto TutorialWin 
    if %health% leq 0 goto TutorialLoss 
    echo Level %elevel% Sock Puppet. 
    echo (%ehealth% HP) 
    echo. 
    echo V.S. 
    echo. 
    echo Level %level% Hero 
    echo %health% HP   
    echo %mana% MP    
    echo %bstat% Brawn      
    echo %ostat% Obscurity  
    echo %cstat% Cowardice 
    echo. 
    set /p answer= Fight(1), Magic(2), Run(3)  
    if %answer%==1 goto TutorialFight 
    if %answer%==2 echo Sorry. You don't know magic yet. 
    if %answer%==3 echo No. You are not going to run from a sock. 
    goto TutorialError 

    :TutorialFight 
    set /a loss=0 
    set /a eloss=0 
    set /a num=%random% * ((%cstat%-%ecstat%) - 1 + 1)/32768 + 1 
    if %num% lss (%ecstat%/2) set /a loss=%random% * (%ebstat% - (%ebstat%/2) + 1)/32768 + (%ebstat%)/2)        
    if %num% geq (%ecstat%/2) set /a eloss=%random% * (%bstat% - (%bstat%/2) + 1)/32768 + (%bstat%)/2) 
    set /a health=(%health% - %loss%) 
    set /a ehealth=(%ehealth% - %eloss%) 
    goto Tutorial 

    :TutorialError 
    title Huh? 
    cls 
    echo Try that again. I believe in you. 
    pause 
    goto Tutorial 

    :TutorialWin 
    title Victory 
    cls 
    echo Yay^^! 
    echo Now I think you are ready for the big pond^^! 
    pause 
    goto Intro 

    :TutorialLoss 
    title ... 
    cls 
    echo ... 
    echo. 
    echo Let's forget that ever happened. 
    pause 
    goto Menu 
+1

這是行不通的:'if%num%lss(%ecstat%/ 2)...'。您必須首先計算第二個數字,並在if中使用它:'set/A num2 = ecstat/2'&'if%num%lss%num2%...' – Aacini

回答

0

使用額外的計算:

if %num% lss (%ecstat%/2) 

到:

If %num% Lss %halfecstat% 

而且我注意到塔

Set/A halfecstat=ecstat/2 

後再行從改變在後面的計算中,它有不平衡的括號,所以你可能想要另外仔細一看。