Da meine Objekte bis auf die eine Kugel fest sitzen, könnte ich bei Programmstart eine Liste erstellen, die alle belegten Koordinaten speichert. Wenn man nun die Kugel bewegt, dann wird geprüft, ob die neuen Koordinaten belegt sind und wenn schon, wird die Kugel auf die letzte Position gesetzt.
Das wäre ja möglich, doch müsste ich wirklich jedes Objekt damit verbinden... Ging das alles auch irgendwie unabhängig von Namen?
Das Spiel soll ähnlich sein wie Labyrinth. Ich will 2 Listen haben: Erste Liste: Position der Löcher und zweite Liste Position der Balken. Jetzt soll das Programm am Anfang alle Shapes mit der Form Kreis an die Funktion Datenbank1 abgeben und die macht dann eine verschachtelte Schleife:
Delphi-Quellcode:
if Shape.shape=stRectangle then
begin
for i:=0 to Shape.left+shape.width-shape.left do
begin
for h:=0 to Shape.top+shape.heigth-shape.top do
begin
//Schreibe Koordinaten in die Liste Balken
end;
end;
end
else if Shape.shape=stCircle then
begin
if Shape.name="Ball" then exit; //Verhindert, dass der Ball selber in die Liste kommt
for h:=0 to Shape.top+shape.heigth-shape.top do
begin
//Schreibe Koordinaten in die Liste Löcher
end;
end;
Da ich aber später noch eine Art "Mapeditor" erstellen will, mit dem man Position und Größe der einzelnen Shapes festlegen kann und eigentlich beliebig viele hinzufügen könnte, kann ich das nicht mit jedem Shape einzeln machen...