网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.实例教程:J2EE编程起步.
.利用JavaApplet编程实现动画特技.
.TIJ swot_JAVA的初学者(四).
.里程碑式的革新—全新J2SE 1.5新.
.JDK1.4新特性之I/O APIs篇.
.Java实战篇:设计自己的Annotati.
.Java基础知识:初学者必须理解的.
.java学习 - 乱评prot.
.XML和J2EE的完美结合.
.体验J2SE 1.5新特性之装箱和拆箱.
.Weblogic8.X安装及连接池配置指南.
.java的io简单应用 选择自 FrankT.
.初学者入门JAVA的XML编程实例解析.
.一个反射的简单例子.
.SonyEricsson发布更好支持企业级.
.RCPII:扩展通用工作台补充—小的.
.Struts入门经验(一).
.Jetspeed开发文档2.
.Java升级篇:ANT十五大最佳实践详.
.WebSphere Studio和XDE构建应用程.

手机斜角地图中A*算法的实用化

发表日期:2008-1-5


手机斜角地图中A*算法的实用化

在这里关于A*算法的基本实现我不多说了,这类文章很多的,大家可以去参考。我目前还是学生主专业是J2EE方向,假如说得不对,还请各位多多包涵。
  A*算法在斜角地图中的实现要害在于确定每次移动的基准点,你可以把基准点定得比较细也可以比较粗。大家可以比较下面两幅图。
手机斜角地图中A*算法的实用化(图一)

手机斜角地图中A*算法的实用化(图二)

在我的实现中,我选择了后者,即把基准点定的比较粗,定在每个TILE的中心。原因有两个: 一,明显计算简单,速度会快很多。 二,确定障碍物也比较方便。  前一种方法往往是在对寻路精度要求比较高的情况下使用。 当然两者混合使用也是非常好的,即在大路径上采用粗的寻路点,到了一个目标点TILE上再采用精细的寻路点进行计算。 我目前采用了这样的方法:

手机斜角地图中A*算法的实用化(图三)
如上图所示,寻路的起点和终点并非总是在TILE中心的,假如要使用粗精度的A*来寻路必须使得寻路点在中心上(目前手机键只支持8方向,寻路点在中心也是必须的)。  我们采用这样的办法先计算出A*要经过的每一个TILE,然后使起始点的位置到第二个TILE的中心位置进行修正移动(即不是直接斜方向移动,而是横竖移动),这样我们的寻路点便到中心了,中间过程便可以以一个个TILE为基准进行移动(图中橘黄色的路径),到倒数第二个TILE时再进行一次向目的点的修正移动。这样便可以比较精确地进行移动了。  不要在第一个TILE中即进行修正移动,因为有可能会有这种情况,中心在人的下面,而人的A*算法的趋势是向上移动,会造成人先下移动再向上移动,非常傻。
一些看法:
1 手机中不一定要使用Binary Heap A*算法
关于Binary Heap A*算法,大家有爱好可以看看这个http://www.policyalmanac.org/games/binaryHeaps.htm
它主要是在对于OPEN表进行了优化,但我觉得在手机游戏上不一定要使用,拿我的实现做例子,在180*208的屏幕上,我贴了40个左右的TILE。大家知道一般怪物都是有视力的,能看到1个屏多一点已经很不错了,这样的话OPEN中节点达到40个已经算是很多了(几乎不可能),我们采用二分插入排序完全可以满足性能的要求,无需使用Binary Heap了。(这也是我使用粗精度寻路方法的原因之一:) )


上一篇:使用 ConTest 进行多线程单元测试 人气:660
下一篇:国外专家谈游戏制作 人气:1104
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐