Java[伪]寻径追踪实现(由Loonframework提供)

我们都知道,在诸如魔兽的很多战略游戏中,会出现要求某A角色接近某B角色的情况(攻击或是怎么着咱不考虑……),玩家很简单的一步操作,却会引发开发者“怎么走过去”这个“复杂”的算法问题,也就是所谓的“Path-finding”——寻径。

好的寻径算法,不但能避免不必要的资源损耗,而且能令游戏友好度增加。反之则会严重影响游戏的可玩性或诸如GIS等系统的可靠性。

在本次,我以Java为例,演示一个最简单的寻径系统——甚至可以说是伪寻径系统的实现。 (^^)

首先,我们建立一个追踪者(一说到这里我就想起了生化里的掠食者……)

Java[伪]寻径追踪实现(由Loonframework提供)packageorg.test.tracker;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
importjava.awt.Color;
Java[伪]寻径追踪实现(由Loonframework提供)
importjava.awt.Graphics;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
/***//**
Java[伪]寻径追踪实现(由Loonframework提供)*<p>
Java[伪]寻径追踪实现(由Loonframework提供)*Title:LoonFramework
Java[伪]寻径追踪实现(由Loonframework提供)*</p>
Java[伪]寻径追踪实现(由Loonframework提供)*<p>
Java[伪]寻径追踪实现(由Loonframework提供)*Description:追踪者。
Java[伪]寻径追踪实现(由Loonframework提供)*</p>
Java[伪]寻径追踪实现(由Loonframework提供)*<p>
Java[伪]寻径追踪实现(由Loonframework提供)*Copyright:Copyright(c)2007
Java[伪]寻径追踪实现(由Loonframework提供)*</p>
Java[伪]寻径追踪实现(由Loonframework提供)*<p>
Java[伪]寻径追踪实现(由Loonframework提供)*Company:LoonFramework
Java[伪]寻径追踪实现(由Loonframework提供)*</p>
Java[伪]寻径追踪实现(由Loonframework提供)*
Java[伪]寻径追踪实现(由Loonframework提供)*
@authorchenpeng
Java[伪]寻径追踪实现(由Loonframework提供)*@email:[email protected]
Java[伪]寻径追踪实现(由Loonframework提供)*
@version0.1
Java[伪]寻径追踪实现(由Loonframework提供)
*/

Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicclassTracker...{
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
privatestaticfinalintSIZE=TrackerPanel.SIZE;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
publicintx;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
publicinty;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
/***//**
Java[伪]寻径追踪实现(由Loonframework提供)*析构函数,默认坐标为0,0
Java[伪]寻径追踪实现(由Loonframework提供)*
Java[伪]寻径追踪实现(由Loonframework提供)
*/

Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicTracker()...{
Java[伪]寻径追踪实现(由Loonframework提供)
this(0,0);
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
/***//**
Java[伪]寻径追踪实现(由Loonframework提供)*析构函数,设定x,y坐标
Java[伪]寻径追踪实现(由Loonframework提供)*
Java[伪]寻径追踪实现(由Loonframework提供)*
@paramx
Java[伪]寻径追踪实现(由Loonframework提供)*
@paramy
Java[伪]寻径追踪实现(由Loonframework提供)
*/

Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicTracker(intx,inty)...{
Java[伪]寻径追踪实现(由Loonframework提供)
this.x=x;
Java[伪]寻径追踪实现(由Loonframework提供)
this.y=y;
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
/***//**
Java[伪]寻径追踪实现(由Loonframework提供)*设定追踪对象
Java[伪]寻径追踪实现(由Loonframework提供)*
Java[伪]寻径追踪实现(由Loonframework提供)*
@paramprey
Java[伪]寻径追踪实现(由Loonframework提供)
*/

Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicvoidchase(Objectiveobjective)...{
Java[伪]寻径追踪实现(由Loonframework提供)
//始终以目标坐标矫正追踪者坐标。
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
if(x>objective.x)...{
Java[伪]寻径追踪实现(由Loonframework提供)x
--;
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)}
elseif(x<objective.x)...{
Java[伪]寻径追踪实现(由Loonframework提供)x
++;
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
if(y>objective.y)...{
Java[伪]寻径追踪实现(由Loonframework提供)y
--;
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)}
elseif(y<objective.y)...{
Java[伪]寻径追踪实现(由Loonframework提供)y
++;
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
/***//**
Java[伪]寻径追踪实现(由Loonframework提供)*绘制追踪者
Java[伪]寻径追踪实现(由Loonframework提供)*
Java[伪]寻径追踪实现(由Loonframework提供)*
@paramg
Java[伪]寻径追踪实现(由Loonframework提供)
*/

Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicvoiddraw(Graphicsg)...{
Java[伪]寻径追踪实现(由Loonframework提供)g.setColor(Color.RED);
Java[伪]寻径追踪实现(由Loonframework提供)g.fillRect(x
*SIZE,y*SIZE,SIZE,SIZE);
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)

而后,我们建立一个被追踪的目标。

Java[伪]寻径追踪实现(由Loonframework提供)packageorg.test.tracker;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
importjava.awt.Color;
Java[伪]寻径追踪实现(由Loonframework提供)
importjava.awt.Graphics;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
/***//**
Java[伪]寻径追踪实现(由Loonframework提供)*<p>
Java[伪]寻径追踪实现(由Loonframework提供)*Title:LoonFramework
Java[伪]寻径追踪实现(由Loonframework提供)*</p>
Java[伪]寻径追踪实现(由Loonframework提供)*<p>
Java[伪]寻径追踪实现(由Loonframework提供)*Description:被跟踪的目标对象。
Java[伪]寻径追踪实现(由Loonframework提供)*</p>
Java[伪]寻径追踪实现(由Loonframework提供)*<p>
Java[伪]寻径追踪实现(由Loonframework提供)*Copyright:Copyright(c)2007
Java[伪]寻径追踪实现(由Loonframework提供)*</p>
Java[伪]寻径追踪实现(由Loonframework提供)*<p>
Java[伪]寻径追踪实现(由Loonframework提供)*Company:LoonFramework
Java[伪]寻径追踪实现(由Loonframework提供)*</p>
Java[伪]寻径追踪实现(由Loonframework提供)*
Java[伪]寻径追踪实现(由Loonframework提供)*
@authorchenpeng
Java[伪]寻径追踪实现(由Loonframework提供)*@email:[email protected]
Java[伪]寻径追踪实现(由Loonframework提供)*
@version0.1
Java[伪]寻径追踪实现(由Loonframework提供)
*/

Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicclassObjective...{
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
privatestaticfinalintSIZE=TrackerPanel.SIZE;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
privatestaticfinalintUP=0;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
privatestaticfinalintDOWN=1;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
privatestaticfinalintLEFT=2;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
privatestaticfinalintRIGHT=3;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
publicintx;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
publicinty;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
/***//**
Java[伪]寻径追踪实现(由Loonframework提供)*析构函数,内部转换x,y坐标。
Java[伪]寻径追踪实现(由Loonframework提供)*
Java[伪]寻径追踪实现(由Loonframework提供)
*/

Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicObjective()...{
Java[伪]寻径追踪实现(由Loonframework提供)x
=TrackerPanel.COL/2;
Java[伪]寻径追踪实现(由Loonframework提供)y
=TrackerPanel.ROW/2;
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
/***//**
Java[伪]寻径追踪实现(由Loonframework提供)*析构函数,设定x,y坐标。
Java[伪]寻径追踪实现(由Loonframework提供)*
Java[伪]寻径追踪实现(由Loonframework提供)
*/

Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicObjective(intx,inty)...{
Java[伪]寻径追踪实现(由Loonframework提供)
this.x=x;
Java[伪]寻径追踪实现(由Loonframework提供)
this.y=y;
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
/***//**
Java[伪]寻径追踪实现(由Loonframework提供)*移动目标
Java[伪]寻径追踪实现(由Loonframework提供)*
Java[伪]寻径追踪实现(由Loonframework提供)*
@paramdir
Java[伪]寻径追踪实现(由Loonframework提供)
*/

Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicvoidmove(intdir)...{
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
switch(dir)...{
Java[伪]寻径追踪实现(由Loonframework提供)
caseUP:
Java[伪]寻径追踪实现(由Loonframework提供)y
--;
Java[伪]寻径追踪实现(由Loonframework提供)
break;
Java[伪]寻径追踪实现(由Loonframework提供)
caseDOWN:
Java[伪]寻径追踪实现(由Loonframework提供)y
++;
Java[伪]寻径追踪实现(由Loonframework提供)
break;
Java[伪]寻径追踪实现(由Loonframework提供)
caseLEFT:
Java[伪]寻径追踪实现(由Loonframework提供)x
--;
Java[伪]寻径追踪实现(由Loonframework提供)
break;
Java[伪]寻径追踪实现(由Loonframework提供)
caseRIGHT:
Java[伪]寻径追踪实现(由Loonframework提供)x
++;
Java[伪]寻径追踪实现(由Loonframework提供)
break;
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
/***//**
Java[伪]寻径追踪实现(由Loonframework提供)*绘制目标
Java[伪]寻径追踪实现(由Loonframework提供)*
Java[伪]寻径追踪实现(由Loonframework提供)*
@paramg
Java[伪]寻径追踪实现(由Loonframework提供)
*/

Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicvoiddraw(Graphicsg)...{
Java[伪]寻径追踪实现(由Loonframework提供)g.setColor(Color.BLUE);
Java[伪]寻径追踪实现(由Loonframework提供)g.fillOval(x
*SIZE,y*SIZE,SIZE,SIZE);
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)

最后,我们建立一个面板,用以绘制图形。

Java[伪]寻径追踪实现(由Loonframework提供)packageorg.test.tracker;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
importjava.awt.Color;
Java[伪]寻径追踪实现(由Loonframework提供)
importjava.awt.Dimension;
Java[伪]寻径追踪实现(由Loonframework提供)
importjava.awt.Frame;
Java[伪]寻径追踪实现(由Loonframework提供)
importjava.awt.Graphics;
Java[伪]寻径追踪实现(由Loonframework提供)
importjava.awt.Image;
Java[伪]寻径追踪实现(由Loonframework提供)
importjava.awt.Panel;
Java[伪]寻径追踪实现(由Loonframework提供)
importjava.awt.event.KeyEvent;
Java[伪]寻径追踪实现(由Loonframework提供)
importjava.awt.event.KeyListener;
Java[伪]寻径追踪实现(由Loonframework提供)
importjava.awt.image.BufferedImage;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
/***//**
Java[伪]寻径追踪实现(由Loonframework提供)*<p>
Java[伪]寻径追踪实现(由Loonframework提供)*Title:LoonFramework
Java[伪]寻径追踪实现(由Loonframework提供)*</p>
Java[伪]寻径追踪实现(由Loonframework提供)*<p>
Java[伪]寻径追踪实现(由Loonframework提供)*Description:追踪演示面板。
Java[伪]寻径追踪实现(由Loonframework提供)*</p>
Java[伪]寻径追踪实现(由Loonframework提供)*<p>
Java[伪]寻径追踪实现(由Loonframework提供)*Copyright:Copyright(c)2007
Java[伪]寻径追踪实现(由Loonframework提供)*</p>
Java[伪]寻径追踪实现(由Loonframework提供)*<p>
Java[伪]寻径追踪实现(由Loonframework提供)*Company:LoonFramework
Java[伪]寻径追踪实现(由Loonframework提供)*</p>
Java[伪]寻径追踪实现(由Loonframework提供)*
Java[伪]寻径追踪实现(由Loonframework提供)*
@authorchenpeng
Java[伪]寻径追踪实现(由Loonframework提供)*@email:[email protected]
Java[伪]寻径追踪实现(由Loonframework提供)*
@version0.1
Java[伪]寻径追踪实现(由Loonframework提供)
*/

Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicclassTrackerPanelextendsPanelimplementsRunnable,KeyListener...{
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
/***//**
Java[伪]寻径追踪实现(由Loonframework提供)*
Java[伪]寻径追踪实现(由Loonframework提供)
*/

Java[伪]寻径追踪实现(由Loonframework提供)
privatestaticfinallongserialVersionUID=1L;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
//设定窗体宽与高
Java[伪]寻径追踪实现(由Loonframework提供)
privatestaticfinalintWIDTH=480;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
privatestaticfinalintHEIGHT=480;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
//描绘的正方体大小
Java[伪]寻径追踪实现(由Loonframework提供)
staticfinalintSIZE=8;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
//获得对应列数,即将frame转化为类数组的存在。
Java[伪]寻径追踪实现(由Loonframework提供)
publicstaticfinalintROW=HEIGHT/SIZE;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
publicstaticfinalintCOL=WIDTH/SIZE;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
//获得对应行数
Java[伪]寻径追踪实现(由Loonframework提供)
privatestaticfinalintUP=0;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
privatestaticfinalintDOWN=1;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
privatestaticfinalintLEFT=2;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
privatestaticfinalintRIGHT=3;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
//追踪者
Java[伪]寻径追踪实现(由Loonframework提供)
privateTrackertracker;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
//目标
Java[伪]寻径追踪实现(由Loonframework提供)
privateObjectiveobjective;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
privateThreadthread;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
privateImagescreen=null;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)
privateGraphicsbg=null;
Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicTrackerPanel()...{
Java[伪]寻径追踪实现(由Loonframework提供)setPreferredSize(
newDimension(WIDTH,HEIGHT));
Java[伪]寻径追踪实现(由Loonframework提供)setFocusable(
true);
Java[伪]寻径追踪实现(由Loonframework提供)addKeyListener(
this);
Java[伪]寻径追踪实现(由Loonframework提供)screen
=newBufferedImage(WIDTH,HEIGHT,1);
Java[伪]寻径追踪实现(由Loonframework提供)bg
=screen.getGraphics();
Java[伪]寻径追踪实现(由Loonframework提供)
//追踪者初始位置,0行,0列
Java[伪]寻径追踪实现(由Loonframework提供)
tracker=newTracker(0,0);
Java[伪]寻径追踪实现(由Loonframework提供)
//目标初始位置,50行,50列
Java[伪]寻径追踪实现(由Loonframework提供)
objective=newObjective(50,50);
Java[伪]寻径追踪实现(由Loonframework提供)thread
=newThread(this);
Java[伪]寻径追踪实现(由Loonframework提供)thread.start();
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicvoidpaint(Graphicsg)...{
Java[伪]寻径追踪实现(由Loonframework提供)
//设定底色为白色,并清屏
Java[伪]寻径追踪实现(由Loonframework提供)
bg.setColor(Color.white);
Java[伪]寻径追踪实现(由Loonframework提供)bg.fillRect(
0,0,WIDTH,HEIGHT);
Java[伪]寻径追踪实现(由Loonframework提供)
//绘制追踪者
Java[伪]寻径追踪实现(由Loonframework提供)
tracker.draw(bg);
Java[伪]寻径追踪实现(由Loonframework提供)
//绘制目标
Java[伪]寻径追踪实现(由Loonframework提供)
objective.draw(bg);
Java[伪]寻径追踪实现(由Loonframework提供)g.drawImage(screen,
0,0,this);
Java[伪]寻径追踪实现(由Loonframework提供)g.dispose();
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicvoidupdate(Graphicsg)...{
Java[伪]寻径追踪实现(由Loonframework提供)paint(g);
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicvoidrun()...{
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
while(true)...{
Java[伪]寻径追踪实现(由Loonframework提供)
//设定追击的目标。
Java[伪]寻径追踪实现(由Loonframework提供)
tracker.chase(objective);
Java[伪]寻径追踪实现(由Loonframework提供)repaint();
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
try...{
Java[伪]寻径追踪实现(由Loonframework提供)Thread.sleep(
110);
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)}
catch(InterruptedExceptione)...{
Java[伪]寻径追踪实现(由Loonframework提供)e.printStackTrace();
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicvoidkeyTyped(KeyEvente)...{
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicvoidkeyPressed(KeyEvente)...{
Java[伪]寻径追踪实现(由Loonframework提供)
intkey=e.getKeyCode();
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
switch(key)...{
Java[伪]寻径追踪实现(由Loonframework提供)
caseKeyEvent.VK_UP:
Java[伪]寻径追踪实现(由Loonframework提供)objective.move(UP);
Java[伪]寻径追踪实现(由Loonframework提供)
break;
Java[伪]寻径追踪实现(由Loonframework提供)
caseKeyEvent.VK_DOWN:
Java[伪]寻径追踪实现(由Loonframework提供)objective.move(DOWN);
Java[伪]寻径追踪实现(由Loonframework提供)
break;
Java[伪]寻径追踪实现(由Loonframework提供)
caseKeyEvent.VK_LEFT:
Java[伪]寻径追踪实现(由Loonframework提供)objective.move(LEFT);
Java[伪]寻径追踪实现(由Loonframework提供)
break;
Java[伪]寻径追踪实现(由Loonframework提供)
caseKeyEvent.VK_RIGHT:
Java[伪]寻径追踪实现(由Loonframework提供)objective.move(RIGHT);
Java[伪]寻径追踪实现(由Loonframework提供)
break;
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)repaint();
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicvoidkeyReleased(KeyEvente)...{
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)Java[伪]寻径追踪实现(由Loonframework提供)
publicstaticvoidmain(String[]args)...{
Java[伪]寻径追踪实现(由Loonframework提供)Framefrm
=newFrame();
Java[伪]寻径追踪实现(由Loonframework提供)frm.setTitle(
"简单的Java图形寻径追踪实现(由Loonframework提供)");
Java[伪]寻径追踪实现(由Loonframework提供)frm.setSize(WIDTH,HEIGHT);
Java[伪]寻径追踪实现(由Loonframework提供)frm.setResizable(
false);
Java[伪]寻径追踪实现(由Loonframework提供)frm.add(
newTrackerPanel());
Java[伪]寻径追踪实现(由Loonframework提供)frm.setVisible(
true);
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)
Java[伪]寻径追踪实现(由Loonframework提供)}

Java[伪]寻径追踪实现(由Loonframework提供)

这时,画面上显示的红色正方体为追踪者,蓝色圆球为被追踪目标,而无论篮球如何移动,红色正方体都将始终向篮球靠拢。

实际上,通过代码我们就可以知道,这时两者间的移动路径,被没有经过复杂的方法演算,而是以目标的坐标来决定的,颇有独孤九剑那种,敌人若是只有一招,我也只有一招,他若是有千招万招,我也自是千招万招。但是,这种方法在实际的寻径处理中,并不能很好的解决如障碍物,区域转换等问题,所以只是一种[伪]寻径,
或者说是在无障碍情况下的简单解决方案。

如果关注寻径算法在Java中的进一步实现,还请继续关注我的blog……


Java[伪]寻径追踪实现(由Loonframework提供)