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

Project1

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

[已经解决] 怎样从一堆随机移动事件中取得某个事件的ID

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
66 小时
注册时间
2009-2-13
帖子
382
跳转到指定楼层
1
发表于 2010-9-19 21:21:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 38571240 于 2010-9-20 23:29 编辑

假设地图上有若干随机移动的事件,有什么好方法能尽量快捷地判断出某一时刻在X轴上距离主角最近的那个事件的ID?

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

2
发表于 2010-9-19 22:05:36 | 只看该作者
伪代码
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

最老土的方法...绝对不要相信其效率.
顺便这是伪代码,不能直接用.

点评

效率的话你的方法也行啊,我想不可避免的要判断每一个事件。  发表于 2010-9-19 23:27
这个略显深奥了点吧,我看不懂啊...... 那么找出K的最小值的地方在哪儿?  发表于 2010-9-19 22:52
Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
66 小时
注册时间
2009-2-13
帖子
382
3
 楼主| 发表于 2010-9-19 23:12:44 | 只看该作者
不知道语法怎么写,但这样似乎可以取得

@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

谢谢沙发的启发
回复 支持 反对

使用道具 举报

Lv2.观梦者

旅之愚者

梦石
0
星屑
275
在线时间
812 小时
注册时间
2007-7-28
帖子
2148

贵宾

4
发表于 2010-9-19 23:36:46 | 只看该作者
回复 38571240 的帖子

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

点评

神语法啊~ 膜拜一下  发表于 2010-9-19 23:51

评分

参与人数 2星屑 +706 收起 理由
夕阳武士 + 700 认可答案
38571240 + 6

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-1 00:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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