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

Project1

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

[已经解决] 怎么样把某个变量的每一位数都提取出来?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
155
在线时间
332 小时
注册时间
2013-7-6
帖子
356
跳转到指定楼层
1
发表于 2014-2-9 12:12:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
假如有一个变量,值是1523,我想要另外4个变量的值一个为这个变量的千位,一个为这个变量的百位,一个为这个变量的十位,一个为这个变量的个位,该怎么样处理???
偶是熬夜学编程的傻子

Lv3.寻梦者

○赛

梦石
0
星屑
1249
在线时间
1276 小时
注册时间
2013-1-22
帖子
2246

贵宾

2
发表于 2014-2-9 12:20:13 | 只看该作者
本帖最后由 天地有正气 于 2014-2-10 09:00 编辑

两种办法。
一种,利用数学方法,一通运算得出,稍后补上。
一种,在保证变量大于1000小于10000的时候,用:
变量名.to_s.split("")[0]
这个是取第一位。

点评

建议层主应该看看F1的Numberic类...split是字符串的方法  发表于 2014-2-9 21:55
取的话可以不split 直接 str[0].chr  发表于 2014-2-9 13:12
先to_s然后才能转换的吧。  发表于 2014-2-9 12:31
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

3
发表于 2014-2-9 21:45:43 | 只看该作者
本帖最后由 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
复制代码

点评

但是算法是通用的 不管换了神马语言都一样用 类似语法糖类的东西 就有局限性了 而且字符串内部的实现应该比单纯的计算复杂 效率上也不划算啊  发表于 2014-2-9 23:13

评分

参与人数 1星屑 +100 收起 理由
天地有正气 + 100 塞糖

查看全部评分


  -fk: -azogi:
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3582
在线时间
3065 小时
注册时间
2011-11-17
帖子
980
4
发表于 2014-2-9 22:45:01 | 只看该作者
话说LS的都把算法都忘了嘛 一个int 非要转成字符串- - 虽然简单 但这种做法是不对的啊
a = 1234
b = []
while a >0
b.push(a%10)
a/=10
end  这样就把每个位都放到个数组里了

点评

虽然说效率就是几毫秒的差距= =嘛已补充3L  发表于 2014-2-9 23:27
这个其实就是沙发说的第一个方法、、嘛我还是比较看重省字数  发表于 2014-2-9 23:11

评分

参与人数 1星屑 +100 收起 理由
天地有正气 + 100 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
432
在线时间
4175 小时
注册时间
2010-6-26
帖子
6474
5
发表于 2014-4-21 11:38:08 | 只看该作者
天地有正气 发表于 2014-2-9 12:20
两种办法。
一种,利用数学方法,一通运算得出,稍后补上。
一种,在保证变量大于1000小于10000的时候,用 ...

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

评分

参与人数 1星屑 +70 收起 理由
天地有正气 + 70 塞糖

查看全部评分

潜水,专心忙活三次元工作了……
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-18 17:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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