Java-Gaming.org    
Featured games (91)
games approved by the League of Dukes
Games in Showcase (576)
games submitted by our members
Games in WIP (497)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  a* algorithm path finding  (Read 1259 times)
0 Members and 1 Guest are viewing this topic.
Offline Graziano Mesina

Senior Newbie





« Posted 2006-09-10 20:35:32 »

Hi, I've implemented a class of Enemies (enemygood) with random movement.
Now I want to implement a new class of Enemies (enemyhunter) that chase the player with an A* algorithm:
http://www.policyalmanac.org/games/aStarTutorial.htm

I've writed the Node class, it represent a single node from the map, on this class I've:

- The x coordinate of the node
- The y coordinate of the node
- The cost of the node
- The precedent node

Now, I want to know if it's correct to write the rest of A* algorithm  in a new class (for example AI class)
or I can write it into the enemyhunter class??

-Montanelli-: Ma lei evadeva quasi sempre, no? <br /><br />-Mesina-: Sì, ho la fortuna di avere i polsi più grossi delle mani...
Offline kappa
« League of Dukes »

JGO Kernel


Medals: 70
Projects: 15


★★★★★


« Reply #1 - Posted 2006-09-11 00:15:53 »

i suggest having a look at the article by david brackeen at http://www.peachpit.com/articles/article.asp?p=101142&rl=1
its very good and best of all its written java.
Offline JAW

Junior Member





« Reply #2 - Posted 2006-09-13 19:58:54 »

You should defenitely write an A* Pathfinder in a seperate class to use it for different purposes and to reuse it. You might want to find a path for something else later, too.

Generally, Pathfinding is not a part of an actor or any specific actor of the game. Its more a service class with knowledge of the map. You can make your A* class very abstract and flexible and it can perform a lot of tasks.

-JAW
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline CaptainJester

JGO Knight


Medals: 12
Projects: 2


Make it work; make it better.


« Reply #3 - Posted 2006-09-14 05:03:11 »

As said, implement the algorithm in its own class.  But also set up an interface that the algorithm will work with, such as a Node interface.  Then you can make it easy to use anywhere just by have other classes implement the Node interface.

Offline ravenger

Senior Newbie





« Reply #4 - Posted 2006-09-18 19:36:52 »

What the guys mean is, implement the strategy pattern and make the A* Algorithm a concrete strategy. This way you can easily implement new Pathfinding algorithms without having to change your current code. (http://en.wikipedia.org/wiki/Strategy_pattern). You'll have to define a method in your interface which you then override in the concrete subclasses (one of which is AStarPathfinder, other could be something like a hillclimbing algorithm (http://en.wikipedia.org/wiki/Hill_climbing), and so on).

For the pathNode in A* you will have to divide the cost of the node into heuristic cost and movement cost.
The formula for calculating the total cost is this; F = G + H

G = the movement cost to move from the starting point A to a given node on the grid, following the path generated to get there.
H = the estimated movement cost or heuristic cost to move from that given node on the grid to the final destination, point B.
F = total cost = movementCost + heuristicCost.

As i said, total cost is something you can calculate so you dont include that into the model itself. You can also think of storing the x and y position in a Dimension, but that is personal preference Smiley
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

xsi3rr4x (12 views)
2014-04-15 18:08:23

BurntPizza (11 views)
2014-04-15 03:46:01

UprightPath (24 views)
2014-04-14 17:39:50

UprightPath (10 views)
2014-04-14 17:35:47

Porlus (27 views)
2014-04-14 15:48:38

tom_mai78101 (49 views)
2014-04-10 04:04:31

BurntPizza (108 views)
2014-04-08 23:06:04

tom_mai78101 (208 views)
2014-04-05 13:34:39

trollwarrior1 (176 views)
2014-04-04 12:06:45

CJLetsGame (182 views)
2014-04-01 02:16:10
List of Learning Resources
by Longarmx
2014-04-08 03:14:44

Good Examples
by matheus23
2014-04-05 13:51:37

Good Examples
by Grunnt
2014-04-03 15:48:46

Good Examples
by Grunnt
2014-04-03 15:48:37

Good Examples
by matheus23
2014-04-01 18:40:51

Good Examples
by matheus23
2014-04-01 18:40:34

Anonymous/Local/Inner class gotchas
by Roquen
2014-03-11 15:22:30

Anonymous/Local/Inner class gotchas
by Roquen
2014-03-11 15:05:20
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!