首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批RPG :战斗循环中断

批RPG :战斗循环中断
EN

Stack Overflow用户
提问于 2017-05-08 02:22:39
回答 1查看 29关注 0票数 0

所以,我遇到了一些问题。

  1. 当TutorialFight运行时,它几乎按照我的意愿工作,只是英雄永远不会被击中。
  2. 当选择魔术或运行时,if语句不会显示回波,而会转到TutorialError。

注意:% stat %是英雄的属性,%estat%是敌人的属性。

代码语言:javascript
复制
    :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
EN

回答 1

Stack Overflow用户

发布于 2017-05-08 12:40:12

使用额外的计算:

代码语言:javascript
复制
Set/A halfecstat=ecstat / 2

然后将行从以下位置更改:

代码语言:javascript
复制
if %num% lss (%ecstat%/2)

至:

代码语言:javascript
复制
If %num% Lss %halfecstat%

另外,我注意到,后面的计算有不平衡的括号,所以你可能也想再仔细看一看。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43838858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档