Project1

标题: 为什么我的游戏经验值只有一种算法? [打印本页]

作者: cqr19950307    时间: 2010-7-3 20:35
标题: 为什么我的游戏经验值只有一种算法?
本帖最后由 神思 于 2010-7-3 21:27 编辑

  #--------------------------------------------------------------------------
  # ● 计算经验值
  #--------------------------------------------------------------------------
  def make_exp_list
    m = actor.exp_basis
    @exp_list[1] = @exp_list[100] = 0
    if m = 16 or 20 or 25      
      for i in 2..99
      @exp_list = Integer(i ** 3 * m / 20.0)
      end
    else
      for i in 2..99
      @exp_list = Integer(i ** 3 * 1.2 - i ** 2 * 15 + i * 100 - 140)
      end
    end
  end
计算经验值这一块的东西我用了条件分歧,结果所有角色的经验值全变成了 Integer(i ** 3 * 16 / 20.0)!!!
求一个好的解决办法让经验值计算支持上述两种方法!
作者: 小幽的马甲    时间: 2010-7-3 21:03
if m = 16 or 20 or 25   
我怎么觉得这个条件语句好别扭= =
作者: 神思    时间: 2010-7-3 21:13
if m = 16 or 20 or 25  

这个判断会一直返回真的.
RUBY里``除了NIL跟FALSE其他都为真

要这样

#--------------------------------------------------------------------------
  # ● 计算经验值
  #--------------------------------------------------------------------------
  def make_exp_list
    m = actor.exp_basis
    @exp_list[1] = @exp_list[100] = 0
    case m
      when 16,20,25      
        for i in 2..99
          @exp_list[i] = Integer(i ** 3 * m / 20.0)
        end
    else
      for i in 2..99
      @exp_list[i] = Integer(i ** 3 * 1.2 - i ** 2 * 15 + i * 100 - 140)
      end
    end
  end


作者: wangswz    时间: 2010-7-3 21:22
本帖最后由 wangswz 于 2010-7-3 21:25 编辑

if m = 16 or 20 or 25
if  m == 16 or m == 20 or m ==25
=是赋值
==是逻辑判断
正如LS说得 你在条件判断里为m付了16的值 然后还是OR 后面的算true
所以。。
作者: cqr19950307    时间: 2010-7-3 21:44
太感谢了!
我自己又用了种方法,就是把i ** 3 * 1.2 - i ** 2 * 15 + i * 100 - 140的二次项、一次项、常数项系数随n(增加度)改变,这样就分成了三次项以外为零和不为零两种情况。
不过听你们一说,我真的学到了不少!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1