数组里:
a = [1,2,3]
b = [2,3,4]
p a|= b #[1,2,3,4]
相当于 a = a | b
相当于.....
在数值里
相当于数学里的位移运算
具体学数学吧作者: a13637392916 时间: 2012-5-5 09:00
灵魂の补给 发表于 2012-5-4 23:59
数组里:
a = [1,2,3]
b = [2,3,4]
effective |= hit < 100 那这个怎么解释,难道用effective和hit的来和判断是否小于100,effective |= hit,应该是个数组吧。那样输出的是个什么结果?一个布尔值。还是说小于100的都被删除?作者: 灵魂の补给 时间: 2012-5-5 09:05
把那一页代码发上来我看下才知道作者: orzfly 时间: 2012-5-5 09:14
a |= b
就相当于
a = a | b
如果 a, b 是 Array,那么就是并集运算,即将 a, b 相加并去掉重复项。
如果 a, b 是数,那么就是逻辑或运算。作者: orzfly 时间: 2012-5-5 09:19
effective 是 a
hit < 100 是 b
也就是说经过 effective |= hit < 100
就相当于
if effective then effective = true end
if hit < 100 then effective = true end作者: a13637392916 时间: 2012-5-5 09:21
灵魂の补给 发表于 2012-5-5 09:05
把那一页代码发上来我看下才知道
def skill_effect(user, skill)
# 清除会心一击标志
self.critical = false
# 特技的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
# 或者特技的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
# 过程结束
return false
end
# 清除有效标志
effective = false
# 公共事件 ID 是有效的情况下,设置为有效标志
effective |= skill.common_event_id > 0
# 第一命中判定
hit = skill.hit
if skill.atk_f > 0
hit *= user.hit / 100
end
hit_result = (rand(100) < hit)
# 不确定的特技的情况下设置为有效标志
effective |= hit < 100
# 命中的情况下
if hit_result == true
# 计算威力
power = skill.power +skill.atk_f + user.atk
if power > 0
power -= skill.pdef_f
power -= skill.mdef_f
power = [power, 0].max
end
就这个了作者: 灵魂の补给 时间: 2012-5-5 09:38 本帖最后由 灵魂の补给 于 2012-5-5 09:39 编辑