Pathfinding : programmer les déplacements des personnages
CHAPITRE 9
195
L’extrait de code suivant correspond à l’implémentation de ce que nous venons de voir.
La classe NodeList, liste générique personnalisée
class NodeList : List where T : Node
{
public new bool Contains(T node)
{
return this[node] != null;
}
public T this[T node]
{
get
{
int count = this.Count;
for (int i = 0; i < count; i++)
{
if (this[i].Tile == node.Tile)
return this[i];
}
return default(T);
}
}
public void DichotomicInsertion(T node)
{
int left = 0;
int right = this.Count - 1;
int center = 0;
while (left <= right)
{
center = (left + right) / 2;
if (node.EstimatedMovement < this[center].EstimatedMovement)
right = center - 1;
else if (node.EstimatedMovement > this[center].EstimatedMovement)
left = center + 1;
else
{
left = center;
break;
}
}
this.Insert(left, node);
}
}
Figure 9-5
Insertion dichotomique du
chiffre 3 dans une liste
=Labat FM.book Page 195 Vendredi, 19. juin 2009 4:01 16
Précédent

- 216/366

Suivant