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

Project1

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

[已经解决] 这段代码错在哪里啊?已自己解决

[复制链接]

Lv2.观梦者

梦石
0
星屑
470
在线时间
159 小时
注册时间
2013-11-2
帖子
205

开拓者

跳转到指定楼层
1
发表于 2017-9-19 22:24:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 飞翔的小鸟3 于 2017-9-22 18:51 编辑


  1. idArray3 = $game_map.events.keys.find_all{|id| $game_map.events[id].name == '丧尸'}
  2.     #==============定义常量
  3.                 if $hash_mun != 0
  4.                   $array_number = -1
  5.                   hash_a = {}
  6.                   a_array = []
  7.                   a_hash = {}
  8.                   total_number = -1
  9.                   array_number = -1
  10.                   a_c = 0
  11.                   $hash_mun = 0
  12.                 end
  13.     #=============判定有多少不同的X
  14.               for hash_id in idArray3
  15.               hash_x = $game_map.events[hash_id].x
  16.               hash_a[hash_x] = 1
  17.               end
  18.               hash_many = hash_a.size
  19.               hash_many2 = hash_many - 1
  20.     #================生成X个数组
  21.               c2 = Array.new(hash_many){[]}
  22.               a2 = 0
  23.               b2 = 0
  24.               while a2 <= hash_many2
  25.                 a2 = a2 + 1
  26.                 c2[b2][0]
  27.                 b2 = b2 + 1
  28.               end
  29.     #================全部X和id写入哈希表
  30.     #================a_hash为要压入的数组序号
  31.               for @event_id in idArray3
  32.                 a_a = $game_map.events[@event_id].x
  33.                 total_number = total_number + 1
  34.                 a_hash[a_a] = total_number
  35.                 p a_hash
  36.               end
  37.     #================================开始迭代
  38.     #========要压入两种数组,一个a_array总,一些若干真
  39.               for @event_id in idArray3
  40.                 # 去除重复元素
  41.                 a_array.uniq!
  42.                 # 迭代delete指令
  43.                 for a_e in 0..hash_many2
  44.                   c2[a_e].delete(nil)
  45.                 end
  46.                 # 开始迭代
  47.                 a_a = $game_map.events[@event_id].x
  48.                 a_array_size = a_array.size
  49.                 a_array_size = a_array_size - 1
  50.                 array_number = array_number + 1
  51.                 $array_number = $array_number + 1
  52.     #-----------------------如果数组有数就执行
  53.                 if a_array_size != -1
  54.                   for a_b in 0..a_array_size
  55.                   # 确实相等的时候 # 所有都不对的时候
  56.                       if a_a == a_array[a_b] then
  57.                       # 压入数组
  58.                         a_d = a_hash[a_a]
  59.                         c2[a_d][$array_number] = @event_id
  60.                         a_array[array_number] = a_a
  61.                         break
  62.                       else a_a != a_array[a_b]
  63.                         a_c = a_c + 1
  64.                         if a_c == a_array_size + 1
  65.                           a_c = 0
  66.                           a_nothing = 0
  67.                         end
  68.                       end
  69.                   end
  70.                   # 在所有都不对的时候压入数组
  71.                       if a_nothing == 0 then
  72.                       # 压入数组
  73.                       a_d = a_hash[a_a]
  74.                       c2[a_d][$array_number] = @event_id
  75.                       a_array[array_number] = a_a
  76.                       end
  77.                  else
  78.                   # 把第一个数压入数组
  79.                   # a_array用来比较X的值,全部是X的值
  80.                   a_array[array_number] = a_a
  81.                  end
  82.                   end
  83.                 end
  84.               end      
复制代码



我找出,使这个c2[a_d][$array_number] = @event_id,a_d改成数字就对了,然后又报了+的错。
先解决前面这个问题吧,a_d的值我有定义,怎么还会错呢?

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

2
发表于 2017-9-19 22:48:32 | 只看该作者
……有点长,没说明报错行的话不太想一行一行分析……

检查 c2[a_d] 的值是否为 nil
数组在获取未定义的值时,返回的是 nil ,比如下面这段代码:
  1. a = [[1],[2],[3]]
  2. a[0][1] = 1 # => a = [[1,1],[2],[3]]
  3. a[1][1] = 2 # => a = [[1,1],[2,2],[3]]
  4. a[2][1] = 3 # => a = [[1,1],[2,2],[3,3]]
  5. a[3][1] = 4 # => undefined method `[]=' for nil:NilClass (NoMethodError)
复制代码

点评

喵呜喵,我试过了,p出来的a_d 为 4,有实际值的。然后版主已经给了我另一个写法,问题已解决。虽然我还是想知道为啥明明a_d = 4,还会出错。。  发表于 2017-9-20 12:05
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

3
发表于 2017-9-20 12:31:08 | 只看该作者
喵呜喵5 发表于 2017-9-19 22:48
……有点长,没说明报错行的话不太想一行一行分析……

检查 c2[a_d] 的值是否为 nil

a_d = 4
a = c2[a_d]

问: a是否为nil?

点评

哎,那个guoxiaomi前辈,一行代码就解决了我这80行代码。  发表于 2017-9-20 19:02
找个半天没找出+出错在哪里  发表于 2017-9-20 18:57
如果没有具体的报错信息我也不知道你在说什么啊……  发表于 2017-9-20 18:55
逻辑修改了,没问题了,然后又报了+的错误。。。。不知道是不是数值没有定义,我记得全局变量没定义就拿去运算就会这样子  发表于 2017-9-20 18:26
哦,你说的是这个啊。不好意思,没看清楚。我P了一下,确实为nil。我知道错在哪里了,只有3个数组,我却调用了第四个,我看看哪里逻辑错了。  发表于 2017-9-20 18:14
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
470
在线时间
159 小时
注册时间
2013-11-2
帖子
205

开拓者

4
 楼主| 发表于 2017-9-20 19:00:43 | 只看该作者
本帖最后由 飞翔的小鸟3 于 2017-9-20 19:04 编辑

RUBY 代码复制
  1. idArray3 = $game_map.events.keys.find_all{|id| $game_map.events[id].name == '丧尸'}
  2.     #==============定义常量
  3.                 if $hash_mun != 0
  4.                   a_array = []
  5.                   a_hash = {}
  6.                   hash_a = {}
  7.                   total_number = -1
  8.                   array_number = -1
  9.                   a_c = 0
  10.                   $hash_mun = 0
  11.                 end
  12.     #=============判定有多少不同的X
  13.                 hash_many = idArray3.size
  14.                 hash_many2 = hash_many - 1
  15.     #================生成X个数组
  16.               c2 = Array.new(hash_many){[]}
  17.               a2 = 0
  18.               b2 = 0
  19.               while a2 <= hash_many2
  20.                 a2 = a2 + 1
  21.                 c2[b2][0]
  22.                 b2 = b2 + 1
  23.               end
  24.     #================全部X和id写入哈希表
  25.     #================a_hash为要压入的数组序号
  26.               for @event_id in idArray3
  27.                 a_a = $game_map.events[@event_id].x
  28.                 total_number = total_number + 1
  29.                 a_hash[a_a] = total_number
  30.               end
  31.     #================================开始迭代
  32.     #========要压入两种数组,一个a_array总,一些若干真
  33.               for @event_id in idArray3
  34.                 # 去除重复元素
  35.                 a_array.uniq!
  36.                 # 迭代delete指令
  37.                 for a_e in 0..hash_many2
  38.                   c2[a_e].delete(nil)
  39.                 end
  40.                 # 开始迭代
  41.                 a_a = $game_map.events[@event_id].x
  42.                 a_array_size = a_array.size
  43.                 a_array_size = a_array_size - 1
  44.                 array_number = array_number + 1
  45.                 $array_number = $array_number + 1
  46.     #-----------------------如果数组有数就执行
  47.                 if a_array_size != -1
  48.                   for a_b in 0..a_array_size
  49.                   # 确实相等的时候 # 所有都不对的时候
  50.                       if a_a == a_array[a_b] then
  51.                       # 压入数组
  52.                         a_d = a_hash[a_a]
  53.                         c2[a_d][$array_number] = @event_id
  54.                         a_array[array_number] = a_a
  55.                         total_number = -1
  56.                         break
  57.                       else a_a != a_array[a_b]
  58.                         a_c = a_c + 1
  59.                         if a_c == a_array_size + 1
  60.                           a_c = 0
  61.                           a_nothing = 0
  62.                         end
  63.                       end
  64.                   end
  65.                   # 在所有都不对的时候压入数组
  66.                       if a_nothing == 0 then
  67.                       # 压入数组
  68.                       a_d = a_hash[a_a]
  69.                       c2[a_d][$array_number] = @event_id
  70.                       a_array[array_number] = a_a
  71.                       total_number = -1
  72.                       end
  73.                  else
  74.                   # 把第一个数压入数组
  75.                   # a_array用来比较X的值,全部是X的值
  76.                   a_array[array_number] = a_a
  77.                  end


回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 04:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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