Hallo,
nettes Spiel, aber die Zeilen 87 und 88 sind problematisch:
Delphi-Quellcode:
TButton(findcomponent('piece_' + IntToStr(field[x, y]))).Left := (x - 1) * 50;
TButton(findcomponent('piece_' + IntToStr(field[x, y]))).Top := (y - 1) * 50;
Es geht zwar an sich, aber statt TButton solltest du TImage nehmen.
Und was hälst du davon dir eine TImage Nachfahrenklasse zu erstellen, die Zum Beispiel die X/Y Pos speichert?
Delphi-Quellcode:
TSwapImage = class(TImage)
public
property X : Integer read GetX write SetX
property Y : Integer read GetY write SetY
end;
procedure TSwapImage.SetX(Value : Integer)
begin
// "Verbesserte" Variante... Die verhindert eine falsche Eingabe. Ansonsten kannst du natürlich auf Min/Max verzichten
Left := Max(Min(Value, 4), 0) * 50;
end;
Außerdem könntest du da dann auch "ihren" Wert speichern.
Und vielleicht solltest du verhindern "FindComponent" zu verwenden und stattdessen vielleicht die T(Swap)Image-Objekte in einer TObjectList zu speichern?
Außerdem sollte man mit einem Klick alle entsprechend verschieben...
Also wenn wir in der Reihe haben:
2304
Das man auf die 2 Klickt und er dann hat:
0234
MfG
xZise