Ja Pointer.
Pointer ist nur ein Zeiger auf eine Adresse.
Ich habe die Konstannte #Null gesetzt, damit die einen garantierten 0 ist (Die konstante nur weil ich wollte das es auffällt! Liest sich schneller als eine Zahl im Wust von Zahlen)
Das ganze ist eigentlich fix erklärt. Am Anfang wird die Variable *p mit der Struktur MONSTER "verknüpft". Damit kann man
im weiteren Verlauf direkt auf die Elemente innerhalb der Struktur zugreifen, wie man es von den Listen kennt *p\Index z.B. ...
Dann wird die Liste nach dem "Hero" durchsucht. (Später fand ich raus, das dieser wohl immer als erstes in der Liste stehen soll,
dazu später mehr)
Wenn Hero gefunden wurde, weise ich der Variable *p den die Adresse des Elementes zu das gerade untersucht wird.
Das geschieht mit dem @ vor dem Listennamen. ( @mon() )
Dann hat der Pointer (*p) die Adresse. Also muss man jetzt nicht mehr weitersuchen und wir verlassen die ForEach Next Schleife
mit einem Break !
Nun sollen ja die Monster gefunden werden die auf dem gleichen Feld wie der Hero stehen, also fragen wir erst ab,
ob denn Hero überhaupt gefunden wurde. (Kann ja sein das der nicht da ist) mit If *p
Dann durchlaufen wir die Liste nochmal und suchen wie vorher auch die entsprechenden monster raus. Fertig.
Somit muss man nur EIN Element vorrätig halten und nicht die komplette Liste !
So nun zum Hero auf der allerersten Position der Liste. Wenn es fest steht das der immer auf der ersten Position sitzt, (weil er als
erstes in die Liste per AddElement() eingetragen wird), dann haben wir ja seine Position schon und müssen die Liste nach dem "Hero"
nicht mehr durchsuchen.
Dazu gibt PB weitere Befehle für Linklists mit. Es würde zum beispiel gehen :
oder aber auch
anstelle der ForEach Next Schleife.... Bei SelectElement ist der Indexparameter = 0, weil eine Linklist bei 0 anfängt zu zählen (also erstes Element : Index = 0, zweites Element: Index = 1 usw)