查看: 2273|回复: 4

[已经解决] 为什么我的游戏经验值只有一种算法?

[复制链接]
梦石
0
星屑
50
在线时间
16 小时
注册时间
2010-7-1
回帖
21
发表于 2010-7-3 20:35:11 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 神思 于 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)!!!
求一个好的解决办法让经验值计算支持上述两种方法!

万物创造者

梦石
0
星屑
54
在线时间
352 小时
注册时间
2008-2-15
回帖
2406
发表于 2010-7-3 21:03:04 | 显示全部楼层
if m = 16 or 20 or 25   
我怎么觉得这个条件语句好别扭= =
From mortal hope immortal power springs.
回复

使用道具 举报

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
回帖
1260

贵宾

发表于 2010-7-3 21:13:04 | 显示全部楼层
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

点评

else就是所有的when都不匹配时的默认,跟其它语言的default类似  发表于 2010-7-3 22:44
可以的  发表于 2010-7-3 21:26
CASE里能写else? 不是都是when么  发表于 2010-7-3 21:24
-.-
回复

使用道具 举报

梦石
0
星屑
50
在线时间
416 小时
注册时间
2006-10-21
回帖
1200
发表于 2010-7-3 21:22:50 | 显示全部楼层
本帖最后由 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
所以。。

点评

其实,赋值本身就会返回true  发表于 2010-7-3 22:44
回复

使用道具 举报

梦石
0
星屑
50
在线时间
16 小时
注册时间
2010-7-1
回帖
21
 楼主| 发表于 2010-7-3 21:44:55 | 显示全部楼层
太感谢了!
我自己又用了种方法,就是把i ** 3 * 1.2 - i ** 2 * 15 + i * 100 - 140的二次项、一次项、常数项系数随n(增加度)改变,这样就分成了三次项以外为零和不为零两种情况。
不过听你们一说,我真的学到了不少!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部