#--------------------------------------------------------------------------
# ● 计算经验值
#--------------------------------------------------------------------------
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
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(增加度)改变,这样就分成了三次项以外为零和不为零两种情况。
不过听你们一说,我真的学到了不少!