谁说路痴嫁不掉新浪提问?谢谢……

查看: 1386|回复: 5
金币0 枚最后登录
流浪者, 积分 0, 距离下一级还需 1 积分
经验370 好人卡0 VIP0 精华0帖子在线时间6 小时注册时间
本帖最后由 ask102 于
21:38 编辑
似乎RMXP的不能用在RMVXA上,而我是新手不懂写出这么复杂的算法……
请问有RMVXA专用的寻路脚本吗?谢谢^^
不是鼠标寻路,而是单纯的寻路算法:四方向。
哈哈 刚刚不小心发错区了
&有的 外站脚本有。&
金币0 枚最后登录
醉啸 长风万里望断 天高星低栏赏 冬夜寒星身化 万里长风趁尽 诗酒年华心只 葬予天下
神, 积分 354, 距离下一级还需 46 积分
经验61457 好人卡162 VIP252 精华0帖子在线时间4671 小时注册时间
金币0 枚最后登录
神之意志, 积分 298, 距离下一级还需 2 积分
经验6286 好人卡7 VIP290 精华5帖子在线时间387 小时注册时间
本帖最后由 叶子 于
05:17 编辑
即插即用的脚本不是很清楚,不过我的一个坑倒是有写过通用的寻路算法#encoding:utf-8
#==============================================================================
# ■ Dijkstra
#------------------------------------------------------------------------------
#& &Dijkstra寻路算法
#==============================================================================
class Dijkstra
&&#--------------------------------------------------------------------------
&&# ● 实例变量
&&#--------------------------------------------------------------------------
&&attr_accessor :source
&&#--------------------------------------------------------------------------
&&# ● 初始化
&&#--------------------------------------------------------------------------
&&def initialize(source)
& & @dist = {}
& & @prev = {}
& & @source = source
&&end
&&#--------------------------------------------------------------------------
&&# ● 返回max_dist内的节点
&&#--------------------------------------------------------------------------
&&def nodes
& & return @dist.keys
&&end
&&#--------------------------------------------------------------------------
&&# ● 从起点到某一点的距离
&&#--------------------------------------------------------------------------
&&def dist(node)
& & return @dist[node] || Float::INFINITY
&&end
&&#--------------------------------------------------------------------------
&&# ● 设置距离
&&#--------------------------------------------------------------------------
&&def set_dist(node, n)
& & @dist[node] = n
&&end
&&#--------------------------------------------------------------------------
&&# ● 路径前一点
&&#--------------------------------------------------------------------------
&&def prev(node)
& & return @prev[node]
&&end
&&#--------------------------------------------------------------------------
&&# ● 设置路径前一点
&&#--------------------------------------------------------------------------
&&def set_prev(node, prev)
& & @prev[node] = prev
&&end
&&#--------------------------------------------------------------------------
&&# ● 获得路径
&&#--------------------------------------------------------------------------
&&def get_route(node)
& & route = [node]
& & while true
& && &if prev(node) == nil
& && &&&return nil
& && &end
& && &if prev(node) == @source
& && &&&return route
& && &end
& && &route.unshift(node)
& && &node = prev(node)
& & end
& & return route
&&end
&&#--------------------------------------------------------------------------
&&# ● 类方法:返回寻路结果
&&#--------------------------------------------------------------------------
&&def self.search(graph, source, max_dist)
& & dij = Dijkstra.new(source)
& & queue = [source] # 按dij.dist()从近到远的队列
& & dij.set_dist(source, 0)
& & while !queue.empty?
& && &u = queue.shift
& && &graph.each_neighbor(u){|v|
& && &&&alt = dij.dist(u) + graph.dist_neighbor(u, v)
& && &&&if alt &= max_dist && alt & dij.dist(v)
& && && & dij.set_dist(v, alt)
& && && & dij.set_prev(v, u)
& && && & if !queue.include?(v)
& && && && &queue.push(v)
& && && & end
& && && & queue.sort_by{|node| dij.dist(node)}
& && &&&end
& && &}
& & end
& & return dij
&&end
end
#==============================================================================
# ■ Graph
#------------------------------------------------------------------------------
#  图
#==============================================================================
module Graph
&&#--------------------------------------------------------------------------
&&# ● 迭代邻居
&&#--------------------------------------------------------------------------
&&def each_neighbor(u)
& & raise 'not yet implemented'
&&end
&&#--------------------------------------------------------------------------
&&# ● 返回邻居两点间距离
&&#--------------------------------------------------------------------------
&&def dist_neighbor(u, v)
& & raise 'not yet implemented'
&&end
end
复制代码用例
当然下面这些不能直接在默认VA工程内使用,只是用法参考。#==============================================================================
# ■ SLGGraph
#------------------------------------------------------------------------------
#  所有方法都以模块方法存在
#==============================================================================
module SLGGraph
end
class && SLGGraph
&&include Graph
&&#--------------------------------------------------------------------------
&&# ● 迭代邻居
&&#--------------------------------------------------------------------------
&&def each_neighbor(u)
& & x, y = u
& & if passable?(x, y, 2)
& && &yield([x, y + 1])
& & end
& & if passable?(x, y, 4)
& && &yield([x - 1, y])
& & end
& & if passable?(x, y, 6)
& && &yield([x + 1, y])
& & end
& & if passable?(x, y, 8)
& && &yield([x, y - 1])
& & end
&&end
&&#--------------------------------------------------------------------------
&&# ● 可通行
&&#--------------------------------------------------------------------------
&&def passable?(x, y, d)
& & x2 = $game_map.round_x_with_direction(x, d)
& & y2 = $game_map.round_y_with_direction(y, d)
& & return false unless $game_map.valid?(x2, y2)
& & return false if !$game_map.passable?(x, y, d)
& & return false if !$game_map.passable?(x2, y2, 10 - d)
& & char_block = Proc.new{|char|
& && &# 这里不判断priority了,如果想事件可穿透,设置through属性
& && &if @source_battler != nil
& && &&&char.block?(@source_battler)
& && &else
& && &&&true
& && &end
& & }
& & return false if $game_map.events_xy_nt(x2, y2).any? do |event|
& && &char_block.call(event)
& & end
& & if (battler = $game_slg.get_battler_at(x2, y2)) != nil
& && &return false if char_block.call(battler)
& & end
& & return true
&&end
&&#--------------------------------------------------------------------------
&&# ● 返回邻居两点间距离
&&#--------------------------------------------------------------------------
&&def dist_neighbor(u, v)
& & return 1
&&end
&&#--------------------------------------------------------------------------
&&# ● 返回Dijkstra寻路实例
&&#--------------------------------------------------------------------------
&&def dijkstra_search(source, max_dist)
& & if source.is_a?(Array)
& && &@source_battler = nil
& && &source_pos = source
& & else
& && &@source_battler = source
& && &source_pos = [@source_battler.x, @source_battler.y]
& & end
& & return Dijkstra.search(self, source_pos, max_dist)
&&end
end
复制代码
金币0 枚最后登录
流浪者, 积分 0, 距离下一级还需 1 积分
经验370 好人卡0 VIP0 精华0帖子在线时间6 小时注册时间
本帖最后由 ask102 于
15:00 编辑
非常谢谢各位^^
我先尝试一下自己写看看好了!不行的话再问有没有现成的吧@@&
外站脚本...是指66RPG主站吗?
金币0 枚最后登录
剑士, 积分 7, 距离下一级还需 5 积分
经验6589 好人卡0 VIP0 精华0帖子在线时间70 小时注册时间
也想尝试自已写,算法知道,不过还不太了解RGSS3,问一下判断一格能不能通向另一格的函数是什么?
金币0 枚最后登录
神之意志, 积分 298, 距离下一级还需 2 积分
经验6286 好人卡7 VIP290 精华5帖子在线时间387 小时注册时间
doubt 发表于
也想尝试自已写,算法知道,不过还不太了解RGSS3,问一下判断一格能不能通向另一格的函数是什么? ...
话说通行判断3楼的用例里就有啊
$game_map.passable?(x, y, d)&&和 $game_map.events_xy_nt(x, y).any?
默认Game_CharacterBase里面基本上也是这两个
认可答案,恭喜你获得由66RPG提供的精美好.
总评分:&经验 + 200&
好人卡 + 2&
短篇七入围奖
短篇七通过海选
这里的今天,有我过往努力的见证~
VAce先驱者
在《世界末日》主题游戏制作大赛,使用VX Ace制作游戏并且进入前15名。
就这么轻松的,开始了解喜欢这个地方。[在线时间达到2000小时]
每次看到别人求助的眼神,我就身不由己的去帮助他们,嘛,当然女士优先。[好人卡达到100张]
素材基金赞助者
柳柳对我说谢谢,因为我在6R素材基金募集里献出了自己的一份力量。
Powered by
| Style by> 提问!!
最近要去sogo写字楼上班,不知道如果想在早上8:50准
阅读 159|回复 7
尚香香的主人
最近要去sogo写字楼上班,不知道如果想在早上8:50准时到达办公室。。。
不知道那里早上是不是很堵啊
攻略|自述|活动|问答|
要是我能变成一只蜗牛多好,走到哪儿就把我的家背到那儿!</font>
走博大路到四环,沿南四环往西,马家堡出口出去(还有继续往西的出口然后往北再往东,就是绕一下,绕开有一段修路的地方),沿附路走一大段,到马家堡西路往北一直走,就能到了。路上会有几个堵点,一个是快到二环开阳桥;另一个是南横街路口附近(菜市口南);还有菜市口。7:30出发的话,预计8:10-20会到sogo。如果出发的晚,博大路会有些堵,另外进了三环之后会有可能更堵。所以出发时间在7:30-7:50。
尚香香的主人
好详细啊!你是不是也走这条路啊?
要是我能变成一只蜗牛多好,走到哪儿就把我的家背到那儿!</font>
回复:haha
好详细啊!你是不是也走这条路啊?
呵呵,是了,这是去那里的最佳路线了。
你还可以这样走:走京津唐,到南三环,走刘家窑往北,上二环,从开阳桥出,向北,走菜市口,菜市口正在修路,建议随时出去走辅路。我LG每天走这条路到北四环,花50分钟左右。
尚香香的主人
西西,上班有伴了!!!好高兴!
要是我能变成一只蜗牛多好,走到哪儿就把我的家背到那儿!</font>
尚香香的主人
西西,谢谢提醒!!
要是我能变成一只蜗牛多好,走到哪儿就把我的家背到那儿!</font>
> 提问!!
最近要去sogo写字楼上班,不知道如果想在早上8:50准
后您才能在本论坛发布信息!
热点楼盘论坛
热门楼盘推荐
社区热点社会星光大道你好,我看了你在百度上的提问,想请教一下你在南京路所定的旅馆怎么样?谢谢_百度知道
你好,我看了你在百度上的提问,想请教一下你在南京路所定的旅馆怎么样?谢谢
提问者采纳
原价248,现在估计已经都满房了,我是订了天津路靠近山西南路那边的一家叫做津晋大酒店的家庭房。你可以提前半个月左右预定,因为我是4个人住,也挺优惠的标房一个晚上才100多,艺龙可以用券),所以订这一家房很划算,但是已经没房了我订的时候,一个晚上才228(在艺龙旅行网上订的,地点离南京路步行街就几步。 如果你是打算8月底或者9月初去,离外滩和地铁2号线都很近。在这个酒店边上还有家叫什么海噶还是什么的,订9月中的应该还有噢
提问者评价
呵呵,不好意思过了这么久才答复,在上海找到了合适的旅馆,谢谢~
来自:求助得到的回答
其他类似问题
旅馆的相关知识
其他2条回答
各种器具。都有。捆绑绳。还有录像机很好啊、。滴蜡。让你记录下美好的瞬间。适合你玩各种游戏。旅馆内东西齐全、
很好啊。旅馆内东西齐全,各种器具。滴蜡。捆绑绳。都有。适合你玩各种游戏。还有录像机。让你记录下美好的瞬间、、、
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁热门排行榜
铜梁黄桷门四季花海
一键收藏,永不丢失
[视频]铜梁黄桷门四季花海最新版,铜梁黄桷门花海,重庆铜梁黄桷门风情小镇现在看花有没有?谢谢!
铜梁花海怎么去?我是个路痴,同学他们要去那里玩,我不知道怎么去,求解答!!!!如果是坐车,可以到南门汽车站外的街边,那里有专门到花海的客车,很方便。 如果是自驾车,直接走铜大路,在曹家店那左转进去,一直走,看到车多花多时就到了。或者走玄天湖水库环湖路到黄桷门,再下去就是花海了。泸州百亩四季花海地址是哪里啊?求解!想带孩子去玩玩,但是找不到啊!有哪位热心的网友知道啊,谢谢了!在龙马潭区特兴镇魏园村 前段时间薰衣草开了一大片,很漂亮的铜梁黄桷门的故事铜梁黄桷门的故事悬赏分:0 - 离问题结束还有 14 天 17 小时 问题补充: 有没有关于黄桷门的传说。谢谢提问者: maobo - 一级北京延庆四季花海适合3月底去吗?完全不适合,海拔高,现在还比较冷,花还没开,草才刚长出来。建议过了五一之后再去合肥四季花海在哪四季花海在牛角大圩,不过现在这个季节那里几乎没花,上周日我才去那里看了,只有一小部分在凋谢的梅花和不少小树!从潼南怎样坐车去黄桷门先从潼南坐车到铜梁,然后再从铜梁坐车到黄桷门(花海),就可以了!重庆铜梁黄桷门风情小镇现在看花有没有?谢谢!看帖是一种态度,水帖是一种能力,四季花海冬天还有花吗是室内的吗延庆四季花海景区餐饮问题延庆四季花海景区那有什么特色餐饮~~~~~~有一家叫放鹅郎的!铜梁花海在哪里铜梁往大足方向,出城约一公里左转,到黄桷门,那里有花海和情人树
澳门开天劈地厦门姐妹俩计划五月十七日起程去黄山,属路痴型的,求建议,谢谢
本人计划五月十七日与妹妹去黄山游玩,大概行程:十七日下午坐火车出发,十八日上午十点到黄山,游宏村,宿汤口,十九至二十一日三天游黄山,宿山上两夜,二十一晚回市区逛老街,宿市区,二十二日坐飞机回厦门。请去过的朋友们给建议啊,有好的酒店推荐一下,经济卫生就好!十分感谢!
问题来自:
13-05-04 & 发布

我要回帖

更多关于 当华丽遇到路痴 的文章

 

随机推荐