![]() |
Anfänger-Problem mit "For"-Schleife
Hi,
wir haben in der Schule mit Delphi angefangen und sollen nun ein Programm schreiben, dass das Haus vom Nikolaus zeichnet. So weit so gut: ![]() Nun gibt man die X- und Y-Koordinate an, wo angefangen werden soll das Haus zu zeichen. Dann klickt man auf Start, und durch Klick auf diesen Button wird folgender Quellcode ausgeführt:
Delphi-Quellcode:
Klassen:
Zahl1:=StrToFloat(Edit1.Text); //Variablen für Haus-Start-Koordinaten umwandeln:
Zahl2:=StrToFloat(Edit2.Text); //String To Float konvertieren (damit Quellcode Variable lesen kann) meinStift.bewegeBis(Zahl1,Zahl2); //Koordinaten wo das Haus stehen soll meineUhr.warte(500); meinStift.runter; meinStift.dreheUm(135); meinStift.bewegeUm(280); //erste Linie unten Rechts-->oben links meineUhr.warte(500); meinStift.dreheUm(225); meinStift.bewegeUm(200); //zweite Linie oben links-->oben rechts meineUhr.warte(500); meinStift.dreheUm(225); meinStift.bewegeUm(280); //dritte Linkie oben rechts-->unten links meineUhr.warte(500); meinStift.dreheUm(135); meinStift.bewegeUm(200); //vierte Linie unten links-->unten rechts meineUhr.warte(500); meinStift.dreheUm(90); meinStift.bewegeUm(200); //fünfte Linie unten rechts-->oben rechts meineUhr.warte(500); meinStift.dreheUm(45); meinStift.bewegeUm(140); //sechste Linie oben rechts-->Dach meineUhr.warte(500); meinStift.dreheUm(90); meinStift.bewegeUm(140); //siebte Linie Dach-->oben links meineUhr.warte(500); meinStift.dreheUm(45); meinStift.bewegeUm(200); //achte Linie oben links-->unten Links meineUhr.warte(2000); //Radiervorgang derBildschirm.loescheAlles;
Delphi-Quellcode:
Variablen:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, mSum,mUhr, StdCtrls, ActnList;
Delphi-Quellcode:
var
Form1: TForm1; Zahl1, Zahl2 : real; derBildschirm : Bildschirm; //verschiedene Objekte aufführen dieMaus : Maus; dieTastatur : Tastatur; meinStift : Stift; meineUhr : Uhr; Schleifen : integer; Nun ist unsere Aufgabe, mit Hilfe einer "For"-Schleife das Haus an mehreren verschiedenen Stellen zeichnen zu lassen. Es mehrmals zeichnen zu lassen ist kein Problem - aber wie das verschieben funktionieren soll leuchtet mir nicht so ganz ein; das Programm zeichnet nun ein mal ganz normal das Haus vom Nikolaus, aber dann beim zweiten mal ist es nicht großartig verschoben, sondern steht auf dem Kopf oder liegt auf der Seite. Zudem ist immer eine überflüssige Linie vorhanden. Hier eine Skizze wie das ganze dann aussieht: (die Skizze habe ich mit Paint gemacht, da ich von dem laufenden Programm keinen Screen machen kann, der das Haus zeigt O.o) ![]() Wo liegt der Fehler..? |
Re: Anfänger-Problem mit "For"-Schleife
Das Problem ist, das nach dem ersten Zeichnen des Hauses der Winkel sich verändert hat.
Also ganz grob sieht die Schleife so aus:
Delphi-Quellcode:
for i := 0 to 5 do
begin meinStift.SetzeWinkel(0); // setze Winkel auf definierten Ausgangswert meinStift.bewegeBis(Zahl1+i*20,Zahl2+i*30); //Koordinaten wo das Haus stehen soll // hier das Häusle zeichnen end; |
Re: Anfänger-Problem mit "For"-Schleife
Hi,
danke für deine Antwort, leuchtet mir ein... du meinst also: Der Stift endet (bei meiner Zeichnungsweg) unten links und zeigt nach unten. Und jetzt zeichnet er wieder ein Haus aber dreht sich in den angegebenen Winkeln in dem Winkel von unten links aus, korrekt? Okay das kann ich soweit nachvollziehen... Ich habe nun:
Delphi-Quellcode:
und bekomme aber bei dem "Winkel"-Befehl den Fehler:
for Schleifen := 1 to 5 do
begin Zahl1:=StrToFloat(Edit1.Text); //Variablen für Haus-Start-Koordinaten umwandeln: Zahl2:=StrToFloat(Edit2.Text); //String To Float konvertieren (damit Quellcode Variable lesen kann) meinStift.bewegeBis(Zahl1+Schleifen*20,Zahl2+Schleifen*30); //Koordinaten wo das Haus stehen soll meineUhr.warte(500); meinStift.runter; meinStift.winkel:= 1; meinStift.dreheUm(135); meinStift.bewegeUm(280); //erste Linie unten Rechts-->oben links meineUhr.warte(500); meinStift.dreheUm(225); meinStift.bewegeUm(200); //zweite Linie oben links-->oben rechts ....... [Fehler] hvn6.pas(72): Der linken Seite kann nichts zugewiesen werden ?? |
Re: Anfänger-Problem mit "For"-Schleife
@DJA: Könntest du die Bilder bitte an den Beitrag anhängen? Ansonsten sind sie verschwunden sobald du sie bei imageshack löschst. Und dann wäre der ganze Beitrag hier nutzlos für Leute die das gleiche oder ein ähnliches Problem haben. Danke :)
|
Re: Anfänger-Problem mit "For"-Schleife
Zitat:
Wenn du den Winkel nicht direkt setzen kannst, muss es irgend eine andere Möglichkeit geben den Winkel auf einen definierten Wert (0 Grad) zu setzen. Ach ja: Stift rauf und runter ist auch wichtig. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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 by Thomas Breitkreuz