![]() |
AW: verschachtelte if funktion
Zitat:
Delphi-Quellcode:
In MoveStone* wird dann das oben beschriebene gemacht:
type
TMulde = class(TObject) private FLeft, FTop, FRight, FBottom : TMulde; FStoneSet : Boolean; function MoveOverStoneBottom() : Boolean; function MoveOverStoneRight() : Boolean; function MoveOverStoneLeft() : Boolean; function MoveOverStoneTop() : Boolean; public function MoveStoneBottom() : Boolean; function MoveStoneRight() : Boolean; function MoveStoneLeft() : Boolean; function MoveStoneTop() : Boolean; end;
Delphi-Quellcode:
In MoveOverStone* wird dann das weiter verarbeitet:
if FStoneSet // Stein in der Mulde
and Assigned(FTop) // Mulde oberhalb vorhanden and FTop.FStoneSet // Stein in der oberen Mulde then begin Result := FTop.MoveOverStone(); if (Result) then // Der Stein wurde verschoben FStoneSet := False; // Dann den hier entfernen end else Result := False;
Delphi-Quellcode:
Das ist nicht der Weisheit letzter Schluss, aber vielleicht hilft es dir zumindest im Hintergrund zu speichern, was passiert.
if Assigned(FTop) // Mulde oberhalb vorhanden
not(FTop.StoneSet) // Mulde oberhalb ist frei then begin FTop.StoneSet := True; Self.StoneSet := False; // Alternativ: // FBottom.StoneSet := False; end else Result := False; Um das noch zu Zeichnen, muss man nicht mehr so viel tun. Du muss halt alle Mulden im Programm abspeichern und dann eine TPaintBox darauf legen. Und im OnPaint der Paintbox kannst du dann die Mulden durchgehen und dann herausfinden wo die Mulde ist (z.B. die Mulde speichert seine Koordinaten) und dann gucken ob die Mulde besetzt ist und z.B. entweder einen nicht ausgefüllten oder einen ausgefüllten Kreis zeichnen. MfG Fabian PS: Nach zwei Minuten schon aufgeben? Wir sind zwar schnell, aber so schnell auch nicht. |
AW: verschachtelte if funktion
Liste der Anhänge anzeigen (Anzahl: 1)
@xZise
ich befürchte aber, das dem TE die Grundlagen fehlen, um deinen Code zu verstehen bzw. den auf dieser Basis zu vervollständigen. Natürlich schreit die Aufgabenstellen und Delphi nach einer OOP-Lösung (mit Klassen), aber schau dir den Ansatz vom TE an und du wirst festellen, dass der über das Drag'n'Drop von Komponenten auf ein Form noch nicht viel weiter gekommen ist. Somit wäre ein Verweis auf ein Grundlagen-Tutorial in diesem Falle besser. Um dieses plain zu lösen sollte der TE mal eine Logik-Tabelle aufzeichnen und dabei alle möglichen Konstellationen eintragen. Damit kann man dann ein Regelwerk erstellen und dieses dann nach Delphi umsetzen. [EDIT] So ich hab da mal als Fingerübung ein Solitär zusammengeklopft :mrgreen: Es ist bestimmt nicht die beste Version, aber eine die funktioniert. Logik und Ausgabe sind natürlich getrennt. Im Anhang befinden sich die Quellen und die kompilierte Version (logisch als exe) HINWEIS Da ich die Generics benutze lässt sich der Code nur mit Delphi 2010 (2009?) compilieren. Mit geübten Fingern kann man die Generics aber auch wegprogrammieren ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz