Thema: 15-Puzzle

Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#14

Re: 15-Puzzle

  Alt 8. Sep 2009, 11:30
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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat