查看: 1892|回复: 3

[已经解决] 问PARTY类中的几个变量问题

[复制链接]
梦石
0
星屑
4761
在线时间
285 小时
注册时间
2013-10-13
回帖
580
发表于 2015-7-9 11:48:42 | 显示全部楼层 |阅读模式

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

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

×
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
梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
回帖
1643

开拓者

发表于 2015-7-9 13:05:41 | 显示全部楼层
1. 对hash调用include?方法相当于hash.keys.include?
2. 这里的item_number是方法, 见152行
3. 是RPG::Item类(见F1-RGSS参考-游戏库-RPGXP 数据结构-RPG::Item), 里面保存了数据库-道具里的设置项
4. 括号代表优先级 也是为了防止歧义 在不确定会不会歧义的时候加上括号为妙; 1和2注释里不是写了么一个是战斗时一个是菜单时

点评

@items.include?(item_id) ? @items[item_id] : 0 我知道@items.include?(item_id)的意思,中间的“?”和 @items[item_id]还有“:0”就看不懂  发表于 2015-7-9 22:22

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分


  -fk: -azogi:
回复

使用道具 举报

梦石
0
星屑
4761
在线时间
285 小时
注册时间
2013-10-13
回帖
580
 楼主| 发表于 2015-7-9 22:24:34 | 显示全部楼层
补充下::(occasion == 0 or occasion == 1)和 :(occasion == 0 or occasion == 2)是什么意思?
回复

使用道具 举报

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

开拓者

发表于 2015-7-10 08:57:30 | 显示全部楼层
xxx ? yyy : zzz是if xxx; yyy; else zzz end的另一种写法,可参考F1脚本入门

点评

谢谢了  发表于 2015-7-11 14:09

  -fk: -azogi:
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部