Project1

标题: 关于Game_SelfSwitches的问题 [打印本页]

作者: 化螺耕    时间: 2014-2-14 23:36
标题: 关于Game_SelfSwitches的问题
RT,前面Game_Switches和Game_Variables基本上都看懂了,但是看到这个脚本时又迷茫了{:2_270:}
1.请问这里的key是什么呢 注释那里说是键,指的是A,B,C,D吗?
2.
RUBY 代码复制
  1. def [](key)
  2.     return @data[key] == true ? true : false
  3.   end
这一段写得好简洁,请问前面获取开关和变量时可否也写成类似的形式呢
就是
RUBY 代码复制
  1. def [](switch_id)
  2.     if switch_id <= 5000 and @data[switch_id] != nil
  3.       return @data[switch_id]
  4.     else
  5.       return false
  6.     end
  7.   end

作者: myownroc    时间: 2014-2-15 00:13
1.这里的键不是独立开关里的ABCD...而是以地图ID 地图中事件的ID以及ABCD 组成的数组
2.貌似可以,请楼主自行尝试

补充一下哈希
哈希是以"键"与值建立对应关系的数据结构
在数组中,对值的访问是通过访问下标完成的,而这些下标是非负数
而在哈希中."键"就可以理解为数组中的下标,只不过"键"不但可以是数值,而且也可以是其他东西,比如例子中为数组
所以,数组可以看作特殊的哈希
作者: 无脑之人    时间: 2014-2-15 19:14
1.这里的 key 是一个由地图id 事件id 字符("A","B","C"...可以说任何对象都可以)组成的数组
2.开关和变量只是单纯的由非负整数作为索引的,因此使用数组即可,但是独立开关需要用数组做索引(其实用多维数组也行= =),因此我们需要使用散列表(Hash)
散列表是由对象做索引,建立到另一对象的映射的数据结构,在ruby里面可以使用任何对象,他的原理是通过散列函数...
3.在使用的时候我们也可以模仿Game_Variables做类似的数据结构
作者: 化螺耕    时间: 2014-2-16 10:33
无脑之人 发表于 2014-2-15 19:14
1.这里的 key 是一个由地图id 事件id 字符("A","B","C"...可以说任何对象都可以)组成的数组
2.开关和变量 ...

第二点解释得好高深。。。。。。似懂非懂
作者: 正太君    时间: 2014-2-16 11:16
本帖最后由 正太君 于 2014-2-16 11:18 编辑

独立开关可以理解为这样一个哈希,它包含了所有地图中所有事件的4个独立开关,元素非常非常非常非常多
  1. $game_self_switches =
  2. {
  3. [MAP1,EVENT1,A] => false,[MAP1,EVENT1,B] => false,[MAP1,EVENT1,C] => false,[MAP1,EVENT1,D] => false,
  4. [MAP1,EVENT2,A] => false,[MAP1,EVENT2,B] => false,[MAP1,EVENT2,C] => false,[MAP1,EVENT2,D] => false,
  5. ………………………………………………
  6. [MAP1,EVENTn,A] => false,[MAP1,EVENTn,B] => false,[MAP1,EVENTn,C] => false,[MAP1,EVENTn,D] => false,
  7. ………………………………………………
  8. [MAP2,EVENT1,A] => false,[MAP2,EVENT1,B] => false,[MAP2,EVENT1,C] => false,[MAP2,EVENT1,D] => false,
  9. [MAP2,EVENT2,A] => false,[MAP2,EVENT2,B] => false,[MAP2,EVENT2,C] => false,[MAP2,EVENT2,D] => false,
  10. ………………………………………………
  11. [MAPm,EVENTn,A] => false,[MAPm,EVENTn,B] => false,[MAPm,EVENTn,C] => false,[MAPm,EVENTn,D] => false
  12. }
复制代码
其中[MAP,EVENT,A/B/C/D]表示一个有3个确定元素(地图ID、事件ID、独立开关号)的数组,这个数组对应独立开关ABCD,
如果我现在希望MAP为1,EVENT为2的事件独立开关C打开,那么就令这个哈希中的这个元素
[MAP1,EVENT2,C] => true,
其他元素保持不变,
每次独立开关操作的实质仅仅就是改变这个包含大量元素的哈希中的一个元素的对应值而已




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