annotate trunk/aid/astar.d @ 1:5dd9f598bcd8

Update
author revcompgeek
date Sat, 29 Mar 2008 12:30:20 -0600
parents 4b2e8e8a633e
children ff92c77006c7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
1 /*+++++++++++++++++++++++++++++++++++++++++++
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
2 + A* algorithm +
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
3 + By Matt Peterson +
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
4 +++++++++++++++++++++++++++++++++++++++++++*/
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
5
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
6 module aid.astar;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
7
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
8 import mintl.arrayheap;
1
revcompgeek
parents: 0
diff changeset
9 import mintl.arraylist;
0
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
10
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
11 class Node(DATA) {
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
12 int xloc;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
13 int yloc;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
14 int fitness;
1
revcompgeek
parents: 0
diff changeset
15 private int g;
revcompgeek
parents: 0
diff changeset
16 private int h;
0
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
17 Node* parent = null;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
18 DATA data;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
19
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
20 this(DATA d, int g){
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
21 data = d;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
22 fitness = g;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
23 fitg = g;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
24 }
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
25 this(DATA d, int g, Node* p){
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
26 data = d;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
27 parent = p;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
28 if(parent) fitness = parent.fitness + g;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
29 fitg = g;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
30 }
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
31 int opCmp(Node other){
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
32 return this.fitness - other.fitness;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
33 }
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
34 }
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
35
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
36 class AStar(DATA) {
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
37 alias Node!(DATA) Node;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
38 alias DATA[] delegate(DATA) getChildren;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
39 ArrayHeap!(Node) openList;
1
revcompgeek
parents: 0
diff changeset
40 ArrayList!(Node) closedList;
0
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
41 DATA[] run(DATA start){
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
42
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
43 }
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
44 }