Project1

标题: 怎样从一堆随机移动事件中取得某个事件的ID [打印本页]

作者: 38571240    时间: 2010-9-19 21:21
标题: 怎样从一堆随机移动事件中取得某个事件的ID
本帖最后由 38571240 于 2010-9-20 23:29 编辑

假设地图上有若干随机移动的事件,有什么好方法能尽量快捷地判断出某一时刻在X轴上距离主角最近的那个事件的ID?
作者: moy    时间: 2010-9-19 22:05
伪代码
for i in 0..20
  for j in 0..20
    k = $game_map.events[j].screen_x - $game_player.screen_x
    k = k > 0 ? k : -k
    if k == i
      return j
    end
  end
end

最老土的方法...绝对不要相信其效率.
顺便这是伪代码,不能直接用.
作者: 38571240    时间: 2010-9-19 23:12
不知道语法怎么写,但这样似乎可以取得

@E = []
for eventa in $game_map.events.values
  $k = eventa.x - $game_player.x
  $k = $k > 0 ? $k : -$k
  @E[eventa.id] = $k
  if @E.min == $k
     $game_variables[N] = eventa.id
  end
end

谢谢沙发的启发
作者: 六祈    时间: 2010-9-19 23:36
回复 38571240 的帖子

event = $game_map.events.values.sort_by{|e| (e.x - $game_player.x).abs}[0]
$game_variables[xxx] = event.id




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