查看: 2313|回复: 4

[已经解决] 关于for i in的用法

[复制链接]
梦石
7
星屑
2585
在线时间
567 小时
注册时间
2009-4-30
回帖
228
发表于 2012-4-16 15:42:53 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 timmyyayaya 于 2012-4-16 16:13 编辑

不好意思,在下想请教一下,
下面这段想将0..7变成0..3和4..7,
还请大大指点一下。
  1.    def refresh
  2.     self.contents.clear
  3.     bitmap = RPG::Cache.windowskin("Hud_Hotkeys")  
  4.     self.contents.blt(0, 0, bitmap, Rect.new(0, 0, 120, 55))
  5.     for i in 0..7
  6.       x = 32 * i + 0
  7.       item = $game_player.hud_equip[i]
  8.       next if item.nil?
  9.       if item.is_a?(RPG::Weapon)
  10.         item = nil if $game_party.weapon_number(item.id) == 0 and
  11.           @actor.weapon_id != item.id
  12.       elsif item.is_a?(RPG::Armor)
  13.         item = nil if $game_party.armor_number(item.id) == 0 and
  14.           @actor.armor1_id != item.id
  15.       elsif item.is_a?(RPG::Item)
  16.         item = nil if $game_party.item_number(item.id) == 0 or
  17.           !$game_party.item_can_use?(item.id)
  18.       end
  19.       bitmap = RPG::Cache.icon(item.icon_name)
  20.       self.contents.blt(x, 4, bitmap, Rect.new(0, 0, 24, 24))
  21.     end
  22.   end  
复制代码

梦石
0
星屑
432
在线时间
4175 小时
注册时间
2010-6-26
回帖
6276
发表于 2012-4-16 15:48:02 | 显示全部楼层
本帖最后由 eve592370698 于 2012-4-16 16:03 编辑

for i in 0..7
表示i这个值在0、1、2、3、4、5、6、7的情况下,类似于if i >= 0 and i <=7
不过有循环处理的意思,一般表示动态变化的变量。
  1. for i in 0..3
  2.   y = 一个y轴
  3. end
  4. for i in 4..7
  5.   y = 另一个y轴
  6. end
复制代码
这样一来,原有那个0到7的相同部分就得分别写一遍了,没办法合并。
潜水,专心忙活三次元工作了……
回复

使用道具 举报

梦石
7
星屑
2585
在线时间
567 小时
注册时间
2009-4-30
回帖
228
 楼主| 发表于 2012-4-16 16:00:14 | 显示全部楼层
eve592370698 发表于 2012-4-16 15:48
for i in 0..7
表示i这个值在0、1、2、3、4、5、6、7的情况下,类似于if i >= 0 and i  ...

嗯,在下知道i就是0、1、2、3、4、5、6、7,
在下想将其断成0..3是一个y轴,4..7是另外一个y轴,
但不知道从哪边分段来写?

点评

大致上了解了,感谢。  发表于 2012-4-16 16:15
这个具体看我楼上修改的,毕竟这个脚本不能有重复,也就是0..7不能和0..3离得太近(表达能力有限,不懂请见谅)  发表于 2012-4-16 16:05
回复

使用道具 举报

Fuzzy Ginkgo

梦石
0
星屑
61105
在线时间
1933 小时
注册时间
2010-6-26
回帖
1535

烫烫烫开拓者

发表于 2012-4-16 19:45:07 | 显示全部楼层
谁说不能了?
  1. for i in 0..7
  2.   y=if i > 3 then 222 else 111 end
  3.   ....
  4. end
复制代码
我的言论只代表我个人的观点,不代表雇主及/或任何第三方的立场。
Opinions expressed are solely my own and do not express the views or opinions of my employer and/or any third parties.
捐赠 | GitHub
回复

使用道具 举报

梦石
0
星屑
50
在线时间
51 小时
注册时间
2010-7-16
回帖
43
发表于 2012-4-16 20:32:11 | 显示全部楼层
0.0不是0到6吗?三个点才是到7吧?
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部