Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Strichmenchen soll laufen (https://www.delphipraxis.net/53174-strichmenchen-soll-laufen.html)

Maxxer 12. Sep 2005 11:10

Re: Strichmenchen soll laufen
 
Zitat:

Zitat von leddl
Zitat:

Zitat von Maxxer
Hausaufgaben ? Ne, ich bin erst in der 11 und programmiere erst mit Delphi erst
seit ein paar wochen !

Dann würde ich aber an deiner Stelle dein Geburtsdatum im Profil etwas aktualisieren ;)

Wieso sollte ich das tun ? Ich bin 17 Jahre alt, 1988 Geboren, und habe vor ein paar Wochen mit der 11 angefangen !

Zitat:

Zitat von leddl
Nö, genauso läuft es in der Uni auch desöfteren. Erstmal soll versucht werden, es mit eigenen Mitteln und selbständig zu lösen, und erst dann werden einem die Mittel an die Hand gegeben, mit denen man es evtl einfacher und besser lösen kann. Wenn dir zuerst alle benötigten Befehle vorgeworfen werden, lernst du eher weniger, als wenn du dir das ganze erst ergründne mußt.

Ahso ist das, na dann nehme ich meine bösen Worte über den Lehrer wieder zurück !

@turboPASCAL

Danke das du mir mir erklärt hast wozu man mehrere Stifte braucht,
den ich wöre einfach nicht draufgekommen !
Dein Auto ist cool ^^ !

Habe jetzt 2 Freistunden, vielleicht werd ich mir mal jetzt das ganze anschauen !

EDIT: Eine frage hätte ich noch,
worin besteht der Uterschied zwischen "Stift" und "Buntstift" ?
Kann der eine mehr als der andere ?
Und wie kann ich einen Text schreiben ? Den ich schaffe es einfach nicht ! :(

leddl 12. Sep 2005 11:18

Re: Strichmenchen soll laufen
 
Zitat:

Zitat von Maxxer
Wieso sollte ich das tun ? Ich bin 17 Jahre alt, 1988 Geboren, und habe vor ein paar Wochen mit der 11 angefangen !

:oops: Sorry, hab das wohl zu schnell gelesen. Dachte, du hättest geschrieben "ich bin erst 11" und du hättest dich da vertippt. :oops:

Maxxer 12. Sep 2005 12:10

Re: Strichmenchen soll laufen
 
Hm...
Ich wollte gerade das Menchen machen, mit dem Befehl "DrehWinkelZuruecksetzen;"
aber Delphi sagt Error !(Undeclared indentifier: 'DrehWinkelZuruecksetzen')
Ich verstehe das nicht :(
Aber der Befehl ist ja in dem Auto mit drin und da sagt Delphi nüx ! :gruebel:

Delphi-Quellcode:
for Koordinaten:= 200 to 300  do
  begin
    // Mittelstrich
  with meinBuntstift2 do
  begin
  DrehWinkelZuruecksetzen;
  hoch;
  bewegeBis(Koordinaten,425);
  runter;
  dreheUm(-90);
  bewegeUm(75);

with meinstift do
  begin
  // Kopf

  hoch;
  bewegeBis(Koordinaten,400);
  runter;
  zeichneKreis(25);
  warte(10);

Neutral General 12. Sep 2005 12:12

Re: Strichmenchen soll laufen
 
Das ist ja auch kein Befehl -.-
Man wollte dir nur zeigen wo der Fehler liegt und das es so eine procedure geben müsste damit es funktioniert ;)

Maxxer 12. Sep 2005 12:19

Re: Strichmenchen soll laufen
 
Zitat:

Zitat von Neutral General
Das ist ja auch kein Befehl -.-
Man wollte dir nur zeigen wo der Fehler liegt und das es so eine procedure geben müsste damit es funktioniert ;)

Ja sorry, bin ja ein ganz frischer !
Gleich erstma wieder in die Schule (1std English) und dann werd ich mich mal damit
etwas intensiver befassen.
Ich hoffe das ich es dann hinbekomme :mrgreen:

x000x 12. Sep 2005 19:05

Re: Strichmenchen soll laufen
 
Moin moin,
Zitat:

Zitat von turboPASCAL
Naja, wenn du 35 mal die Drehrichtung änderst dann musst du alle 35 Anweisungen dreheUm(Winkel) wieder zurücksetzen :gruebel: ... ein Summieren der Winkel führt zu einem falschem Winkel... Bei grösseren Zeichenaktionen wird man da schnell an einen Punkt kommen wo man das ganze verflucht... :wink:

Ein setzen der Koordinaten des Stiften ist ja auch vorhanden mit bewegeBis(PosX, PosY), nur das zurücksetzen des Winkels fehlt und es gibt keine Möglichkeit diesen auf Null zu setzen.

... und wieder ein Einspruch... mit
Delphi-Quellcode:
dreheUm(-winkel);
setze ich den Winkel wieder auf 0 zurück, egal welchen Wert Winkel hat...
z.B.
Delphi-Quellcode:
// ..
 with meinBuntstift2 do
    begin
      // Auto
      //DrehWinkelZuruecksetzen; // * neu * //
      dreheUm(-Winkel);
      hoch;
      bewegeBis(Koordinaten - 200, 550);
      runter;
// ..
macht genau das selbe wie dein DrehWinkelZuruecksetzen;

turboPASCAL 12. Sep 2005 19:40

Re: Strichmenchen soll laufen
 
Zitat:

Zitat von x000x
dreheUm(-Winkel) setze ich den Winkel wieder auf 0 zurück, egal welchen Wert Winkel hat...

Delphi-Quellcode:
procedure Stift.dreheUm(pWinkel: Zahl);
begin
  derTastaturpuffer.check;
  zWinkel:=zWinkel+pWinkel;
  repeat
    if zWinkel>=360 then zWinkel:=zWinkel-360;
  until zWinkel<360;
end;
:gruebel: ...mach das doch bitte mal an hand dieses Beispieles: :wink:

[edit=turboPASCAL]Beispiel entfernt[/edit]

x000x 12. Sep 2005 20:58

Re: Strichmenchen soll laufen
 
Zitat:

Zitat von turboPASCAL
:gruebel: ...mach das doch bitte mal an hand dieses Beispieles: :wink:

Ok ;-)
Delphi-Quellcode:
program Test_;
// ..
  //Initialisierung
  myBildschirm := Bildschirm.init;
  myStift := Stift.init;
  for x := 250 to 600 do
  begin
    with myStift do
    begin
      //
      // Neu ;-)
      dreheUm(-Winkel);
      // ..
Winkel ist eine funktion (aus der Klasse Stift, haste vll. übersehen?), die mir den aktuellen Wert von zWinkel zurückliefert.
Wenn ich den Wert negiere, bekomme ich immer den aktuellen Wert von zWinkel mit entgegengesetztem
Vorzeichen.
z.B.:
angenommen: zWinkel := -90
dann gibt mir die funktion -Winkel = --90 zurück (oder auch gleich 90)
und -90 + 90 = 0

Kann es leider nicht besser erklären, aber probier es aus...

turboPASCAL 12. Sep 2005 21:22

Re: Strichmenchen soll laufen
 
Zitat:

Zitat von x000x
Winkel ist eine funktion (aus der Klasse Stift, haste vll. übersehen?), ...

Ja. :wall: :oops:
Zitat:

Zitat von x000x
... die mir den aktuellen Wert von zWinkel zurückliefert.
Wenn ich den Wert negiere, bekomme ich immer den aktuellen Wert von zWinkel mit entgegengesetztem
Vorzeichen.

Ja.
Zitat:

Zitat von x000x
... aber probier es aus...

Achnöh... :wink:

Delphi-Quellcode:
dreheUm(-Winkel); // = DrehWinkelZuruecksetzen

Maxxer 13. Sep 2005 14:46

Re: Strichmenchen soll laufen
 
Also, wen ich es richtig verstande habe,
muss ich immer den Winkel rurücksetzen [z.B.dreheUm(-90);] !?
Aber wen ich vorhabe etwas größeres mit vielen Linien zu zeichnen,
wie sieht es da aus ? Muss ich da auch immer dann den Winkel zurücksetzen ?

Beim Strichmenchen wars ja nicht so viel


Delphi-Quellcode:
program Menchen;


uses
  mSum, Windows;

var
  derBildschirm  : Bildschirm;
  meinStift      : Stift;
  meinBuntstift8  : Buntstift;
  meinBuntstift7  : Buntstift;
  meinBuntstift6  : Buntstift;
  meinBuntstift5  : Buntstift;
  meinBuntstift4  : Buntstift;
  meinBuntstift3  : Buntstift;
  meinBuntstift2  : Buntstift;
  meinBuntstift  : Buntstift;
  meineMaus      : Maus;
  Koordinaten    : Integer;

procedure Mittelstrich(Koordinaten: Integer);
begin
with meinBuntstift do
begin
hoch;
bewegeBis(Koordinaten,425);
dreheUm(-90);
runter;
bewegeUm(75);
dreheUm(90);
end;
end;

procedure Beinlinks(Koordinaten: Integer);
begin
with meinBuntstift2 do
begin
hoch;
bewegeBis(Koordinaten,500);
dreheUm(-45);
runter;
bewegeUm(50);
dreheUm(45);
end;
end;

procedure Beinrechts(Koordinaten: Integer);
begin
with meinBuntstift3 do
begin
hoch;
bewegeBis(Koordinaten,500);
dreheUm(-135);
runter;
bewegeUm(50);
dreheUm(135);
    end;
    end;

procedure Armlinks(Koordinaten: Integer);
begin
with meinBuntstift4 do
begin
hoch;
bewegeBis(Koordinaten,450);
dreheUm(-135);
runter;
bewegeUm(40);
dreheUm(135);
end;
end;

procedure Armrechts(Koordinaten: Integer);
begin
with meinBuntstift5 do
begin
hoch;
bewegeBis(Koordinaten,450);
dreheUm(-45);
runter;
bewegeUm(40);
dreheUm(45);
end;
end;

procedure Augelinks(Koordinaten: Integer);
begin
with meinBuntstift6 do
begin
hoch;
bewegeBis(Koordinaten-12.5,400);
runter;
zeichneKreis(4);
end;
end;

procedure Augerechts(Koordinaten: Integer);
begin
with meinBuntstift7 do
begin
hoch;
bewegeBis(Koordinaten+12.5,400);
runter;
zeichneKreis(4);
end;
end;

procedure Mund(Koordinaten: Integer);
begin
with meinBuntstift8 do
begin
hoch;
bewegeBis(Koordinaten-7,412);
runter;
bewegeUm(14);
end;
end;

begin
  derBildschirm  := Bildschirm.init;
  meinStift      := Stift.init;
  meinBuntstift8  := Buntstift.init;
  meinBuntstift7  := Buntstift.init;
  meinBuntstift6  := Buntstift.init;
  meinBuntstift5  := Buntstift.init;
  meinBuntstift4  := Buntstift.init;
  meinBuntstift3  := Buntstift.init;
  meinBuntstift2  := Buntstift.init;
  meinBuntstift  := Buntstift.init;
  meineMaus      := Maus.init;


for Koordinaten:= 200 to 400  do
  begin
  Mittelstrich(Koordinaten);
  Beinlinks(Koordinaten);
  Beinrechts(Koordinaten);
  Armlinks(Koordinaten);
  Armrechts(Koordinaten);
  Augelinks(Koordinaten);
  Augerechts(Koordinaten);
  Mund(Koordinaten);
with meinstift do
  begin
   // Kopf
  hoch;
  bewegeBis(Koordinaten,400);
  runter;
  zeichneKreis(25);




  warte(10);
  repeat
until meineMaus.istGedrueckt;

with derBildschirm do
     begin
     loescheAlles;
   end;
   end;
  end;




  meinBuntstift5.gibFrei;
  meinBuntstift4.gibFrei;
  meinBuntstift3.gibFrei;
  meinBuntstift.gibFrei;
  meinBuntstift2.gibFrei;
  meinStift.gibFrei;
  derBildschirm.gibFrei;
  meineMaus.gibFrei;
end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:59 Uhr.
Seite 2 von 3     12 3      

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