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

Project1

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

[已经解决] 属性对比脚本

[复制链接]

Lv3.寻梦者

梦石
3
星屑
65
在线时间
200 小时
注册时间
2008-7-8
帖子
180
跳转到指定楼层
1
发表于 2015-9-20 11:13:13 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
尝试在帮助窗口里加个属性对比的计算,期望效果是:找出两件装备所有的属性(不重复),并将属性相减结果不为零的量显示出来。
基础属性param的对比很好做,因为equip.param都是自带0~7号所有属性,直接用 equip.params.each_with_index{|x,y| param2.push[@params[y], x- equip2.params[y]]} 就可以了(大概?)
但是features中的三个属性就想不出用什么办法抽取出来并进行计算了,因为features里的元素都是零散的,没有的属性不是为0而是直接没有。
而且A装备有的features B装备不一定有,这种情况想默认将没有该属性的装备视作该属性为0也不知道应该怎么实现。
求解决思路..

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2015-9-20 12:04:59 | 只看该作者
本帖最后由 taroxd 于 2015-9-20 12:10 编辑

随手写的,可能出错,只看思路就好

RUBY 代码复制
  1. # a, b 为两个具有 features 的物品
  2. def compare_item(a, b)
  3.   # 为了更快速地索引,
  4.   # 制作一个 code => data_id => [value_a, value_b] 的表。
  5.   # 返回值即为这个 hash
  6.   result = Hash.new do |h1, code|
  7.     h1[code] = Hash.new do |h2, data_id|
  8.       h2[data_id] = []
  9.     end
  10.   end
  11.  
  12.   a.features.each do |feature|
  13.     result[feature.code][feature.data_id][0] = feature.value
  14.   end
  15.  
  16.   b.features.each do |feature|
  17.     result[feature.code][feature.data_id][1] = feature.value
  18.   end
  19.  
  20.   result
  21.  
  22.   # 获取结果后的用法:
  23.   # result.each do |code, data_id2value|
  24.   #   data_id2value.each do |data_id, (value_a, value_b)|
  25.   #
  26.   #     # value_a 和 value_b 可能为 nil。此时取 0 还是取 1 需要看情况判断。
  27.   #     # 在这里按照你的要求取 0。
  28.   #     value_a ||= 0
  29.   #     value_b ||= 0
  30.   #
  31.   #     do_something_with code, data_id, value_a - value_b
  32.   #   end
  33.   # end
  34. end

点评

这里用 hash 主要是为了给出默认值,以及防止 code 之间间隔过大浪费内存。迭代的方式和数组是一样的。  发表于 2015-9-20 12:45
非常感谢。我之前想的也是用嵌套.each的block来做,但用的是数组,直接出错...是只有hash可以这样嵌套吗?  发表于 2015-9-20 12:42

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 22:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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