annotate trunk/aid/astar.d @ 0:4b2e8e8a633e

Repository setup.
author revcompgeek
date Mon, 03 Mar 2008 19:28:10 -0700
parents
children 5dd9f598bcd8
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;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
9
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
10 class Node(DATA) {
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
11 int xloc;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
12 int yloc;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
13 int fitness;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
14 private int fitg;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
15 Node* parent = null;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
16 DATA data;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
17
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
18 this(DATA d, int g){
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
19 data = d;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
20 fitness = g;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
21 fitg = g;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
22 }
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
23 this(DATA d, int g, Node* p){
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
24 data = d;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
25 parent = p;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
26 if(parent) fitness = parent.fitness + g;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
27 fitg = g;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
28 }
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
29 int opCmp(Node other){
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
30 return this.fitness - other.fitness;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
31 }
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
32 }
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
33
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
34 class AStar(DATA) {
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
35 alias Node!(DATA) Node;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
36 alias DATA[] delegate(DATA) getChildren;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
37 ArrayHeap!(Node) openList;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
38 ArrayHeap!(Node) closedList;
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
39 DATA[] run(DATA start){
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
40
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
41 }
4b2e8e8a633e Repository setup.
revcompgeek
parents:
diff changeset
42 }