AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anfänger-Problem mit "For"-Schleife

Ein Thema von DJA · begonnen am 6. Nov 2007 · letzter Beitrag vom 6. Nov 2007
Antwort Antwort
DJA

Registriert seit: 1. Nov 2007
12 Beiträge
 
#1

Anfänger-Problem mit "For"-Schleife

  Alt 6. Nov 2007, 17:55
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:
http://img155.imageshack.us/img155/8265/hvnsf8.jpg

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:
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;
Klassen:
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, mSum,mUhr, StdCtrls, ActnList;
Variablen:

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)
http://img220.imageshack.us/img220/7659/hvn2dd6.jpg

Wo liegt der Fehler..?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Anfänger-Problem mit "For"-Schleife

  Alt 6. Nov 2007, 18:04
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;
Andreas
  Mit Zitat antworten Zitat
DJA

Registriert seit: 1. Nov 2007
12 Beiträge
 
#3

Re: Anfänger-Problem mit "For"-Schleife

  Alt 6. Nov 2007, 18:22
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:
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
.......
und bekomme aber bei dem "Winkel"-Befehl den Fehler:
[Fehler] hvn6.pas(72): Der linken Seite kann nichts zugewiesen werden

??
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Anfänger-Problem mit "For"-Schleife

  Alt 6. Nov 2007, 18:36
@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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Anfänger-Problem mit "For"-Schleife

  Alt 6. Nov 2007, 18:40
Zitat von DJA:
und bekomme aber bei dem "Winkel"-Befehl den Fehler:
[Fehler] hvn6.pas(72): Der linken Seite kann nichts zugewiesen werden
Die Unit hvn6.pas kenne ich nicht; ist wohl von deinem Lehrer.
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.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz