首  页   最新日志    火人论坛        火人作品    编程园地    网络日志    网友作品     留言本本     关于火人
用户登陆
用户:
密码:
 

站点日历
73 2018 - 1 48
 123456
78910111213
14151617181920
21222324252627
28293031




日志搜索

 标题   内容

 
 
一生都要珍惜的人 AsphyreGUI完全中文支持版本--火人制作
晴天 传奇2地图读取(带寻路算法及源码)--火人出品
   [分类:火人作品][发表日期:2006-6-20] [发表:火人[查看:135101]

按此在新窗口打开图片
关于传奇地图的格式网上有很多,就不再多做说明,不了解的也可直接看代码。
显示引擎用的DelphiX
寻路算法已经封装成两个类TPathMap(通用),TLegendMap(传奇2专用)
(****************************************************************************
  关于TLegendMap(位于PathFind.pas)的用法
  1、FLegendMap:=TLegendMap.Create;
     FLegendMap.LoadMap('mapfile')返回地图数据TMapData
     FLegendMap.SetStartPos(StartX, StartY,PathSpace)
     Path:=FLegendMap.FindPath(StopX, StopY)
  2、FLegendMap:=TLegendMap.Create;
     FLegendMap.LoadMap('mapfile')返回地图数据TMapData
     Path:=FLegendMap.FindPath(StartX,StartY,StopX, StopY,PathSpace)

     其中
     Path为TPath = array of TPoint 为nil时表示不能到达
     第一个值为起点,最后一个值为终点

     PathSpace为离开障碍物多少个象素
****************************************************************************)

(****************************************************************************
  关于TPathMap的特点
  1、不需要传递地图数据,节省内存的频繁拷贝
  2、可自定义估价函数,根据自己需要产生不同路径

  关于TPathMap的用法
  1、定义估价函数MovingCost(X, Y, Direction: Integer)
     只需根据自定义的地图格式编写)
  2、FPathMap:=TPathMap.Create;
     FPathMap.MakePathMap(MapHeader.width, MapHeader.height, StartX, StartY,MovingCost);
     Path:=FPathMap.FindPathOnMap( EndX, EndY)
     其中Path为TPath = array of TPoint;

  如果不喜欢在TPathMap外部定义估价函数,可继承TPathMap,
  将地图数据的读取和估价函数封装成一个类使用。
***************************************************************************)

点击下载此文件



[本日志由 火人 于 2006-06-22 03:04 AM 编辑]

[21] [22] [23] [24] [25] [26] [27] [28] [29] [30]  ... [30]  

引用这个评论 BennyTes 于 2017-07-10 04:26 PM 发表评论: 
wh0cd486862 [url=http://vytorin.reisen/]vytorin cream[/url] [url=http://depakote.world/]buy depakote online[/url] [url=http://malegrafxt.reisen/]malegra fxt[/url] [url=http://azulfidine.reisen/]buy azulfidine[/url] [url=http://rhinocort.world/]rhinocort[/url] [url=http://shallaki.reisen/]shallaki[/url] 

引用这个评论 CharlesWab 于 2017-07-10 10:59 AM 发表评论: 
wh0cd192966 [url=http://buyvardenafil.us.org/]vardenafil online[/url] [url=http://buyindocin.us.org/]view website[/url] 

引用这个评论 CharlesWab 于 2017-07-10 09:44 AM 发表评论: 
wh0cd119491 [url=http://minocin.world/]minocin[/url] [url=http://arava.world/]arava[/url] [url=http://herbolax.reisen/]herbolax[/url] [url=http://procardia.reisen/]procardia[/url] [url=http://plendil.world/]discover more here[/url] [url=http://urispas.reisen/]buy urispas[/url] 

引用这个评论 CharlesWab 于 2017-07-10 07:55 AM 发表评论: 
wh0cd46016 [url=http://tretinoincream01.us.com/]tretinoin cream 0.1[/url] 

引用这个评论 BennyTes 于 2017-06-28 09:10 PM 发表评论: 
[url=http://aceon.world/]buy aceon[/url]

引用这个评论 PhyllisVOR 于 2017-04-26 10:19 AM 发表评论: 
wh0cd17400 [url=http://sildenafilcitrate2017.com/]sildenafil citrate[/url] 

引用这个评论 lsgzs 于 2011-07-05 01:40 PM 发表评论: 
跑路要在什么地方改啊,谢谢。

引用这个评论 huanter 于 2007-02-19 09:23 AM 发表评论: 
那可不可以发一个可以读取传世客户端地图的呀?

引用这个评论 就爱踹电脑 于 2006-11-21 05:36 PM 发表评论: 
两个字    精彩

引用这个评论 myskyno1 于 2006-11-07 07:57 PM 发表评论: 
那么是否在52个字节之后再开始读取地图消息呢???
好象不只是按着地图的高度x地图的宽开始读取地图信息的..??疑问了..

delphi好想读的时候和VB是不相同的....

引用这个评论 火人 于 2006-11-05 05:54 PM 发表评论: 
传奇地图数据头结构 52字节
      宽2字节
      高2字节
      标题16字节
      时间8字节
      保留24字节

随后是地图数据,结构元如下
      BkImg: word; (BkImg and $8000=1表示是障碍物)
      MidImg: word;
      FrImg: word;
      flag: Byte;
      offset: Byte;
      framecount: Byte;
      delaytime: Byte;
      objgroup: Byte;
      unused: Byte;

引用这个评论 myskyno1 于 2006-11-05 04:51 PM 发表评论: 
火人大哥,传奇的map格式结构能不能详细的讲解下啊?实在不懂delphi,vb是否编写这个东东的..
前提是暂不加入自动寻路
求救

引用这个评论 hookapi 于 2006-10-22 01:13 PM 发表评论: 
火人大哥的这个算法比我自己的A*算法效率上要优,值得学习!

[21] [22] [23] [24] [25] [26] [27] [28] [29] [30]  ... [30]  

 

发表评论
发表: 用户:  密码:   注册?  
验证码    
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
表  情
 

Copyright © 2006 All rights reserved. Design by huosoft

电话:13974847258    QQ群:7155339
Powered by L-Blog V-Blog 2004-2005