Wie währe es so ?:
Delphi-Quellcode:
type
TMyGameFeld = record
belegt:Boolean;
// Vielleicht sind noch weitere Variablen Sinvoll, wenn nicht währe ein Record übertrieben
end;
{
Die 20 X 20 ist die Größe. Sie wird so Berechnet: SpielFeldBreiteInPixel durch Objekt Größe.
Ich glaube du verwendest TImage oder ? Dann würde das so aussehen:
Image1.Widht div 20 mit der Annahme das 20 Pixel dein Objekt breit ist. Das Funktioniert genau so mit der Höhe.
}
MyGameFeld:array[0..20,0..20] of TMyGameFeld;
// In der MouseDown Methode des TImage würdest du jetzt "nur" noch folgendes schreiben:
mx:=x div 20; my:=y div 20;
// mx und my musst du vorher noch Deklarieren.
jetzt kannst du mit mx und my auf MyGameFeld zugreifen:
MyGameFeld[mx,my].belegt:=True;
Du kannst auch mit Klassen Arbeiten. Wie gesagt: Wenn du nur eine Variable brauchst währe der Record übertrieben. Dann musst du es leicht anpassen: Statt "of TMyGameFeld" würde es dann "of Boolean" heißen.
Zu Empfehlen währe noch eine Init Procedure zu erstellen, dann erlebst du keine bösen Überraschungen:
Delphi-Quellcode:
procedure ...Init;
begin
for y:=0 to 20 do begin
for x:=0 to 20 do begin
GameFeld[x,y].Belegt:=False;
end;
end;
end;
Das ist jetzt nur eine Art Pseude-Code. Aber so ähnlich würde ich es machen und es müsste sogar Funktionieren. Ich hoffe das hilft dir weiter. Hier sind komplette Fertige Lösungen nicht gerne gesehen. Darum schreibe ich das so. Ich glaube davon hast du mehr oder ?