Hi,

hier die Routine, welche prüft, ob das Feld betreten werden darf.
Code:
int Navigation::FeldFrei(int x, int y, void *p) 
{
int	i;
unsigned	long	lngOffset;						// Daten offset in der Karten
char *pointer;										// Daten pointer
	
	if (x > KARTENGROESSE-2) return false;	// Bereichskontrolle x
	if (y > KARTENGROESSE-2)  return false;	// Bereichskontrolle y

	if (x < 2 )			return false;			// Zu nah am Rand
	if (y < 2 )			return false;			// Zu nah am Rand

	pointer = (char*)p;							// Pointer von Basisadresse legen	
	lngOffset= x + (y * KARTENGROESSE);		// Y Adresse in der Karten ermitteln
	pointer += lngOffset;						// Adresse berechnen

	if (*pointer > 20)
		return  false;								// Mit groesser Sicherheit ein Hindernis !

// Pruefe inneren Roboterbereich / aesserer Bereich erster Teil
		
	for(i=0;i<8;i++)
		{
		 if( *(pointer + InnerArray[i]) > 20 )	// Ist eine Schwellwert überschritten
			return false;								// Ist ein Hindernis im Inneren Kreis	
		 
		 if( *(pointer + OuterArray[i]) > 20 )	// Ist eine Schwellwert überschritten
			return false;								// Ist ein Hindernis im aeusseren Kreis
		}

// Pruefe auesseren Roboterbereich

	for(i=8;i<16;i++)
		{
		 if( *(pointer + OuterArray[i]) > 20 )	// Ist eine Schwellwert überschritten
			return false;								// Ist ein Hindernis im Aeusseren Kreis
		}

	return true;                 				// Feld kann betreten werden
}
Diese Routine wird innerhalb des A* hier aufgerufen (via udValid()):

Code:
void CPathFinder::CreateChildren(_asNode *node)
{
	int x = node->x;									// X / Y Werte aus performancegruenden
	int y = node->y;									// in lokale Variablen

	for (int i=-1;i<2;i++) 							// Durchsuche alle umgebenen Knoten fuer den Weg
		{
		for (int j=-1;j<2;j++) 						// in alle Richtungen
			{
			if (i == 0 && j == 0 || 				// Ist der aktuelle Knoten aktiv !
				!udValid(x+i, y+j, m_pCBData)) 	// oder darf dieses Feld nicht betreten werden
				{
				continue;								// Dann Schleife hier abbrechen (kein Linkchild)
				}
			LinkChild(node, x+i, y+j);				
			}
		}
}
Die Seite von "Patrick Leste" ist mir bekannt und sie war schon eine gute Hilfe:
Leider sind die Links für eine "falsche Heuristik" für mich nicht klar genug.
Leider kann ich seine Implemetierung nicht mit der meinigen vergleichen.

Gruss Ritchie

P.S: Fehler in der KostenRoutine gefunden . Überbewertet.