设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2082|回复: 4
打印 上一主题 下一主题

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2010-7-1
帖子
31
跳转到指定楼层
1
发表于 2010-7-3 20:35:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

Lv1.梦旅人

万物创造者

梦石
0
星屑
54
在线时间
352 小时
注册时间
2008-2-15
帖子
2432
2
发表于 2010-7-3 21:03:04 | 只看该作者
if m = 16 or 20 or 25   
我怎么觉得这个条件语句好别扭= =
From mortal hope immortal power springs.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

彩色的银子

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

贵宾

3
发表于 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
-.-
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
416 小时
注册时间
2006-10-21
帖子
1245
4
发表于 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
回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-12 13:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表