Project1

标题: 怎么样把某个变量的每一位数都提取出来? [打印本页]

作者: wolves    时间: 2014-2-9 12:12
标题: 怎么样把某个变量的每一位数都提取出来?
假如有一个变量,值是1523,我想要另外4个变量的值一个为这个变量的千位,一个为这个变量的百位,一个为这个变量的十位,一个为这个变量的个位,该怎么样处理???
作者: 天地有正气    时间: 2014-2-9 12:20
本帖最后由 天地有正气 于 2014-2-10 09:00 编辑

两种办法。
一种,利用数学方法,一通运算得出,稍后补上。
一种,在保证变量大于1000小于10000的时候,用:
变量名.to_s.split("")[0]
这个是取第一位。
作者: kuerlulu    时间: 2014-2-9 21:45
本帖最后由 kuerlulu 于 2014-2-10 22:56 编辑

很抱歉在下一天都没上线【题外话
  1. class Interpreter
  2.   def 取每一位(var, first_tvar)
  3.     $game_variables[var].to_s.split.each_with_index{|s,index| $game_variables[first_tvar+index]= s.to_i}
  4.   end
  5. end
复制代码
首先将上述脚本丢到main前
然后[事件]>[脚本]中输入
  1. 取每一位(1,2)
复制代码
就会将1号变量的数的每一位赋值给2,3,4...(如果有这么多位的话)号变量
如先设置1号变量为123456
然后[事件]>[脚本]> 取每一位(1,3)
然后3号变量就是1,4号变量就是2,以此类推
补充,根据LX的方法重定义一下(用法不变):
  1. class Interpreter
  2.   def 取每一位(var, first_tvar)
  3.     a = $game_variables[var]
  4.     b = [];(b.push(a%10);a/=10) while a > 0;b.reverse!
  5.     b.each_with_index{|s,index| $game_variables[first_tvar+index]= s}
  6.   end
  7. end
复制代码

作者: yagami    时间: 2014-2-9 22:45
话说LS的都把算法都忘了嘛 一个int 非要转成字符串- - 虽然简单 但这种做法是不对的啊
a = 1234
b = []
while a >0
b.push(a%10)
a/=10
end  这样就把每个位都放到个数组里了
作者: eve592370698    时间: 2014-4-21 11:38
天地有正气 发表于 2014-2-9 12:20
两种办法。
一种,利用数学方法,一通运算得出,稍后补上。
一种,在保证变量大于1000小于10000的时候,用 ...

已经有了标准答案可以设定为已解决。
补充:变量该方法不支持浮点数。




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