![]() |
Labyrinth
Moin Leute
stelle mal seit langem wieder mal ne Frage. HAben dies mal in Informatik die Aufgabe bekommen ein Labyrinth zu zeichnen und dieses Labyrinth soll dann autonom gelöst werden. Hier zu hat uns unser Lehrer erklärt wie wir einen stack programmieren. Bei mir gibt es aber schon beim zeichnen eines Labyrinthes ein Problem hier mal der quellecode.
Delphi-Quellcode:
Das Problem ist einfach das er nicht zeichnet liegt es villeicht an der for schleife und wäre hier eine repeat schleife besser
procedure TForm1.Button1Click(Sender: TObject);
var n,hoehe,breite,hoehe1,breite1 :integer; begin hoehe1:= trunc(image1.height / (strtoint(edit1.Text))); breite1:= trunc(image1.width / strtoint(edit1.Text)); hoehe:= trunc(image1.height / (strtoint(edit1.Text))); breite:= trunc(image1.width / strtoint(edit1.Text)); For n:=0 to strtoint(edit1.Text) do begin image1.Canvas.Rectangle(breite,hoehe,(image1.width - breite),(image1.height - hoehe)); breite:=breite1 + breite; hoehe:=hoehe1 + hoehe; end; end; Danke schon mal im vorraus |
AW: Labyrinth
Auch wenn es neu für dich ist, es gibt hier eine Suchfunktion (und gerade das Labyrinth-Thema wurde hier schon x-mal behandelt)
![]() ![]() Gibt zum Beispiel diesen ![]() |
AW: Labyrinth
Wo soll hier ein Stack versteckt sein?
Und die Art der Schleife ist vollkommen egal, also egal ob For, While oder Repeat ... das macht keinen Unterschied wenn es eigentlich nur die Berechnungen und Befehle innerhalb der Schleife geht. Tipp: Debuggen Man lege sich einen Haltepunkt an den Anfang der Schleife und wärend man die Schleife Befehl für Befehl durchgeht, schaut man sich die Werte der Variablen und Berechnungen an und vergleicht diese mit den Werten, welche man an dieser Stelle erwarten würde. Wo soll hier eigentlich ein Labyrinth versteckt sein? Ich seh nur Rechtecke, welche ineinander gezeichnet werden und das zuoft. Du hast doch bestimmt vergessen den Brush zu entfernen? Also die Rechtecke sind doch bestimmt "gefüllt"? Wenn ja dann werden anfangs Rechtecke ineinander gemalt und ab der hälfte fangen diese an sich wieder gegenseitig zu übermalen, bis das Letze alles wieder gelöscht/übermalt hat. Füge mal diese 2 Zeilen ein und schau ob etwas und was passiert.
Delphi-Quellcode:
hoehe:=hoehe1 + hoehe;
// Application.ProcessMessages; Sleep(1000); // end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 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