Project1

标题: 问PARTY类中的几个变量问题 [打印本页]

作者: kvkv97    时间: 2015-7-9 11:48
标题: 问PARTY类中的几个变量问题
Game_Party
  #--------------------------------------------------------------------------
  # ● 获取物品的所持数   
  #--------------------------------------------------------------------------
  def item_number(item_id)
    # 如果 hash 个数数值不存在就返回 0
    return @items.include?(item_id) ? @items[item_id] : 0
问题1:这个语句的意思是什么,看不懂?@items已经被 定义成哈希表了,哪里来的数组?
  #--------------------------------------------------------------------------
  # ● 增加物品 (减少)
  #     item_id : 物品 ID
  #--------------------------------------------------------------------------
  def gain_item(item_id, n)
    # 更新 hash 的个数数据
    if item_id > 0
      @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
问题2:item_number是什么类的变量?怎么可以在这里出现?
    end
  end
  #--------------------------------------------------------------------------
  # ● 判断物品可以使用
  #--------------------------------------------------------------------------
  def item_can_use?(item_id)
    # 物品个数为 0 的情况
    if item_number(item_id) == 0
      # 不能使用
      return false
    end
    # 获取可以使用的时候
    occasion = $data_items[item_id].occasion
问题3:第2个occasion是什么类的方法或者属性?

    # 战斗的情况
    if $game_temp.in_battle
      # 可以使用时为 0 (平时) 或者是 1 (战斗时) 可以使用
      return (occasion == 0 or occasion == 1)
问题4:(occasion == 0 or occasion == 1)为什么要用小括号?这里的occasion == 1,为什么下面的occasion == 2?
    end
    # 可以使用时为 0 (平时) 或者是 2 (菜单时) 可以使用
    return (occasion == 0 or occasion == 2)
  end
作者: kuerlulu    时间: 2015-7-9 13:05
1. 对hash调用include?方法相当于hash.keys.include?
2. 这里的item_number是方法, 见152行
3. 是RPG::Item类(见F1-RGSS参考-游戏库-RPGXP 数据结构-RPG::Item), 里面保存了数据库-道具里的设置项
4. 括号代表优先级 也是为了防止歧义 在不确定会不会歧义的时候加上括号为妙; 1和2注释里不是写了么一个是战斗时一个是菜单时
作者: kvkv97    时间: 2015-7-9 22:24
补充下::(occasion == 0 or occasion == 1)和 :(occasion == 0 or occasion == 2)是什么意思?
作者: kuerlulu    时间: 2015-7-10 08:57
xxx ? yyy : zzz是if xxx; yyy; else zzz end的另一种写法,可参考F1脚本入门




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