Delphi-PRAXiS
Seite 1 von 3  1 23      

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 11. Sep 2005 17:56


Strichmenchen soll laufen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nabend,

ich habe hier ein problem geschildert(ganz unten), doch niemand antwortet !

Heute habe ich versucht ein Strichmenchen zu programmieren das läuft,
jedoch habe ich schon Probleme mit dem Strich (vom Kopf nach unten).
Immer wen sich das dingen bewegen soll dreht sich der Strich mit !
Ich habe es dann mit dem Befehl "break" versucht doch dann wollte nicht mal
der Kopf seine Position ändern !

Ich habe dann dem Mittelstrich eine eigene Schleife verpasst,
doch irgendwie wollte das nicht so richtig !

Kann mir einer den code für den Mittelstrich geben den ich bin echt am verzwefeln !
Was mache ich falsch ?
Ich hänge vorsichthalber mSum an.

Mein Code:

Delphi-Quellcode:
program Menchen;


uses
  mSum, Windows;

var
  derBildschirm : Bildschirm;
  meinStift    : Stift;
  meineMaus    : Maus;
  Koordinaten  : Integer;

begin
  derBildschirm := Bildschirm.init;
  meinStift    := Stift.init;
  meineMaus    := Maus.init;


for Koordinaten:= 200 to 300  do
  begin
with meinstift do
  begin

  hoch;
  bewegeBis(Koordinaten,400);
  runter;
  zeichneKreis(25);
  hoch;
  bewegeBis(Koordinaten,425);
  dreheUm(-90);
  runter;
  bewegeUm(75);
  warte(10);


  repeat
until meineMaus.istGedrueckt;

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



  meinStift.gibFrei;
  derBildschirm.gibFrei;
  meineMaus.gibFrei;
end.

sakura 11. Sep 2005 19:31

Re: Strichmenchen soll laufen
 
Zitat:

Zitat von Maxxer
ich habe hier ein problem geschildert(ganz unten), doch niemand antwortet

Ist ja auvh kein Wunder, weil: Neues Problem, neuer Thread ;)

...:cat:...

Maxxer 11. Sep 2005 20:04

Re: Strichmenchen soll laufen
 
Zitat:

Zitat von sakura
Ist ja auvh kein Wunder, weil: Neues Problem, neuer Thread ;)

...:cat:...

Ja, aber dort ging es ja noch um das gleiche Thema !
Er wollte ein Auto fahren lassen und bei mir hats nicht funktioniert !

Man ich habe mich schon so gefreut als ich gesehen habe das einer auf meinen Thread geantwortet hat.. :(

Falls mir hier niemand hilft muss ich mich wohl auf meinen blöden Lehrer verlassen :cry:

Speedmaster 11. Sep 2005 20:14

Re: Strichmenchen soll laufen
 
Warum willst du dir das leben so umständlich machen?
Ich verstehs immer noch nicht, so schwer ist eine Grafikapi doch auch nicht!

Edit:
Zudem ich mal zu deinem bisherigen Programmcode nicht soviel sagen möchte!

Hador 11. Sep 2005 20:44

Re: Strichmenchen soll laufen
 
Zitat:

Zitat von Speedmaster
Warum willst du dir das leben so umständlich machen?
Ich verstehs immer noch nicht, so schwer ist eine Grafikapi doch auch nicht!

Edit:
Zudem ich mal zu deinem bisherigen Programmcode nicht soviel sagen möchte!

So ähnlich sah der Quelltext vom Lehrer unseres Parallelkurses in Informatik auch aus.

Unseren konnte ich davon überzeugen das ganze ohne Mausmalen zu machen.


---


@Maxxer: Korrigiere mich, wenn ich falsch liege, aber irgendwie sieht mir das ganze doch zimlich nach ner Hausaufgebe aus.

turboPASCAL 11. Sep 2005 22:48

Re: Strichmenchen soll laufen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Maxxer,

das mit dem drehen ist so eine Sache, die Unit mSum ist daran schult das es nicht klappt.

Wenn du in einer For- Schleife einen Winkel mit zB. dreheUm(15) angibst:
Delphi-Quellcode:
for Wert := 1 to 3 do
begin
  dreheUm(15);
end;
so ist dann das Ergebnis:
Code:
Winkel = 15
Winkel = 15+15
Winkel = 15+15+15
leider fehlt in der Unit mSum eine Funktion um den Drehwinkel wieder zurückzusetzen. zB. so:
Delphi-Quellcode:
for Wert := 1 to 3 do
begin
  dreheUm(15);
  DrehWinkelZuruecksetzen; // Winkel auf 0° zurücksetzen
  dreheUm(15);
  dreheUm(15);
end;
das Ergebnis wäre dann so:
Code:
Winkel = 15
Winkel = 0
Winkel = 15
Winkel = 15+15
...
Ich habe Dir das mal anhand deines Auto Beispieles verdeutlicht. Nun rotiert die Carrosserie nicht mehr.

Wenn Du ernsthaft (oder als Hobby) programmieren willst solltest du dir die Grundlagen zu Delphi ansehen Delphi für Anfänger?

PS.: bezeichne bitte nicht deinen lehrer als dumm denn der hat seinen lehrstoff und nicht immer den absoluten durchblick es sei denn er heisst ulrich borghoff denn der hat die unit msum geschrieben :wink:

MfG.

x000x 12. Sep 2005 00:15

Re: Strichmenchen soll laufen
 
Moin moin,
Zitat:

Zitat von turboPASCAL
leider fehlt in der Unit mSum eine Funktion um den Drehwinkel wieder zurückzusetzen.

Einspruch, da funktion nicht nötig wäre,
da mit
Delphi-Quellcode:
//..
  dreheUm(15);
  // zurücksetzen
  dreheUm(-15);
//..
der Winkel zurückgesetzt wird...

Maxxer 12. Sep 2005 08:45

Re: Strichmenchen soll laufen
 
Zitat:

Zitat von Hador
@Maxxer: Korrigiere mich, wenn ich falsch liege, aber irgendwie sieht mir das ganze doch zimlich nach ner Hausaufgebe aus.

Wir haben Wochenende, da gehe ich nicht in die Schule !
Hausaufgaben ? Ne, ich bin erst in der 11 und programmiere erst mit Delphi erst
seit ein paar wochen !
Mir war halt langweilig und ich wollte auch schon etwas mehr können als die anderen bei mir im Kurs !

Zitat:

Zitat von turboPascal
PS.: bezeichne bitte nicht deinen lehrer als dumm denn der hat seinen lehrstoff und nicht immer den absoluten durchblick es sei denn er heisst ulrich borghoff denn der hat die unit msum geschrieben Wink "

Sry, aber wen er sagt er haben an dem Design für den neuen Airbus mitgearbeitet und dann noch was für Chrysler,
dann heist es so viel für mich wie "ich kann alles !".
Beispiel: wir sollten ein Briefumschlag Programmieren, dann ein Haus.
2 Stunden später hat er uns erst dann die Befehle dafür erklärt, was sagst du nun ?
Muss er nicht zuerst die Befehle erklären und dann sollten wir Programmieren, so ist es doch
viel logischer, oder nicht ?!

PS: danke für das Auto !

leddl 12. Sep 2005 08:55

Re: Strichmenchen soll laufen
 
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 ;)
Zitat:

Zitat von Maxxer
Beispiel: wir sollten ein Briefumschlag Programmieren, dann ein Haus.
2 Stunden später hat er uns erst dann die Befehle dafür erklärt, was sagst du nun ?
Muss er nicht zuerst die Befehle erklären und dann sollten wir Programmieren, so ist es doch
viel logischer, oder nicht ?!

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.

turboPASCAL 12. Sep 2005 09:46

Re: Strichmenchen soll laufen
 
Zitat:

Zitat von x000x
Einspruch, da funktion nicht nötig wäre, da mit
Delphi-Quellcode:
//..
  dreheUm(15);
  // zurücksetzen
  dreheUm(-15);
//..
der Winkel zurückgesetzt wird...

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.

Da es sich um eine "MiniProgrammierSprache" handelt sollte so ein Befehl nicht fehlen.

@Maxxer ich hoffe du has verstanden warum im Autobeispiel zwei Stifte verwendet werden, leider habe ich vergessen die Procedure AutoBody zu entfernen. (hatte dei falsche Datei in das Zip-File gepackt) Die Procedure macht nichts anderes als das Codestückchen aus dem Haupttei "auszulagern"
so sollte es "normal" aussehen:
Code:
[b]begin[/b]
  [color=#0000A0]//Initialisierung[/color]
  meinBildschirm := Bildschirm.init;
  meinBuntstift := Buntstift.init;
  meinBuntstift2 := Buntstift.init;
  meineMaus := Maus.init;

  [color=#0000A0]//AutoBody[/color]

  [b]for [/b]Koordinaten := 250 [b]to[/b] 600 [b]do[/b]
  [b]begin[/b]

    [b]with [/b]meinBuntstift2 [b]do[/b]
    [b]begin[/b]
      [color=#0000A0]// Auto[/color]
      DrehWinkelZuruecksetzen; [color=#0000A0]// * neu * //[/color]
      hoch;
      bewegeBis(Koordinaten - 200, 550);
      runter;
      bewegeUm(600);
      dreheUm(90);
      [color=red][b]...[/b][/color]
      bewegeUm(125);
      dreheUm(90);
      bewegeUm(75);
    [b]end[/b];

    [color=#0000A0]//Aktionsteil[/color]

    [b]with [/b]meinBuntstift [b]do[/b]
    [b]begin[/b]
      [color=#0000A0]// Räder[/color]
      [color=red][b]...[/b][/color]
Bei deinem Strichmänchen handelt es sich um ein ähnliches Problem, du musst auch hier zwei Stifte verwenden. einen für den Körper und einen (oder auch zwei) für die Beine damit sich der Körper bei den Beinanimationen nicht mitdreht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:12 Uhr.
Seite 1 von 3  1 23      

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