Nabend,
Ich führe folgenden code aus:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
void AMap::Init(Map &map)
{
//Aussenrum alles blocken
for(int i = 0; i < GetWidth();i++)
{
atiles[i][0] = ATile(blocked);
atiles[i][GetHeight()] = ATile(blocked);
}
for(int i = 0; i < GetHeight();i++)
{
atiles[0][i] = ATile(blocked);
atiles[GetWidth()][i] = ATile(blocked);
}
//normale Map in AStar Map übertragen
for(int x = 0; x < GetWidth();x++)
{
for(int y = 0; y < GetHeight();y++)
{
atiles[x+1][y+1] = ATile(map.tiles[x][y].GetProperty());
}
}
}
|
Der Konstruktor der für die ATiles aufgerufen wird.
|
C-/C++-Quelltext
|
1
2
3
4
5
|
ATile::ATile(TileProperty p)
{
prop = p;
list = No;
}
|
Diese Funktion erstellt eine Map für den A*. Dafür wird die normale Map (
Map &map) benutzt. Diese wird nur zum Auslesen benutzt, damit in der Pathfinding Map nicht begehbare Tiles verzeichnet sind usw.
Nun ist das problem, dass nach dem letzten Durchlauf der ersten Schleife die Variable "Nullpunkt" und nach dem letzten Durchlauf der zweiten Schleife das Tile[0][0] verändert werden.
Das Bild "Debug" zeigt diese Veränderungen nochmal im Debuggen.
Das Bild "error" zeigt die Fehlermeldung, die dann später dadurch ausgeworfen wird. (Bei späterem Zugriff auf die Tiles)
Nun ist einfach das Problem, dass ich diese Variablen niemals verändern möchte und eigentlich auch nie verändere, aber sie werden geändert und ich weiss nicht wieso.
Ich hoffe mir kann da Jemand weiterhelfen.