Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Jojo (https://www.delphipraxis.net/55154-jojo.html)

Sierra 17. Okt 2005 13:52


Jojo
 
Hi!
Ich probiere gerade ein Jojo zu programmieren.
Der Code und das Objekt sehen so aus.

Delphi-Quellcode:
program pJojo;

uses
  mSuM,
  mJojo in 'mJojo.pas';

var hatBildschirm: Bildschirm;
    hatMaus: Maus;
    hatJojo1,
    hatJojo2,
    hatJojo3: Jojo;

begin
hatBildschirm:=Bildschirm.init;
hatMaus:=Maus.init;
hatJojo1:=Jojo.init(100,300);
hatJojo2:=Jojo.init(200,200);
hatJojo3:=Jojo.init(300,250);

repeat
hatjojo1.zeichne;
hatjojo2.zeichne;
hatjojo3.zeichne;
hatjojo1.loesche;
hatjojo2.loesche;
hatjojo3.loesche;
hatjojo1.bewege;
hatjojo2.bewege;
hatjojo3.bewege;

until hatMaus.doppelklick;

hatJojo1.gibFrei;
hatJojo2.gibFrei;
hatJojo3.gibFrei;
hatMaus.gibFrei;
hatBildschirm.gibFrei;
end.
Und die Klasse Jojo

Delphi-Quellcode:
unit mJojo;

interface
uses mSuM;

type
Jojo = class
        zXPos,zYPos: integer;
        zRadius, zLaenge: integer;
        zFaden,zDy:real;
        hatStift: Buntstift;
        constructor init(pXPos,pLaenge:integer);
        procedure zeichne;
        procedure loesche;
        procedure bewege;
        destructor gibFrei;
        end;

implementation

constructor Jojo.init(pXPos,pLaenge:integer);
begin
zXPos:=pXPos; zYPos:=0; zLaenge:=pLaenge; zRadius:=20;
hatStift:=Buntstift.init;
hatStift.setzeFuellMuster(GEFUELLT);
hatStift.setzeLinienBreite(2);
hatStift.dreheBis(-90);
zFaden:=zRadius;
zDy:=1;
hatStift.bewegeBis(zXPos,zYPos);
hatStift.runter;
end;

procedure Jojo.zeichne;
begin
hatStift.bewegeBis(zXPos,zYPos);
hatStift.bewegeUm(zFaden);
hatStift.zeichneKreis(zRadius);
end;

procedure Jojo.loesche;
begin
hatStift.radiere;
hatStift.bewegeBis(zXPos,zYPos);
hatStift.bewegeUm(zFaden);
hatStift.zeichneKreis(zRadius);
hatStift.normal;
end;

procedure Jojo.bewege;
begin
hatStift.bewegeUm(zDy);
zFaden:=hatStift.vPosition;
end;


destructor Jojo.gibFrei;
begin
hatStift.gibFrei;
end;

end.
Jetzt würde ich gerne wissen, wie ich es schaffe, dass das Jojo anhält und es wieder zurückläuft.
Außerdem würde ich gerne wissen, was der Befehl "vPosition" macht.

Danke.

MarcoWarm 17. Okt 2005 14:01

Re: Jojo
 
????? was bitte ist die Klasse Buntstift *grübel*

poste doch bitte "richtigen" Delphi-Code... dann kann man es wenigstens nachvollziehen

bttb930 17. Okt 2005 14:01

Re: Jojo
 
Versteh ich das richtig: Du hast das selbst programmiert und fragst UNS was der Befehl vPosition macht?

Oder sollen wir lediglich Deine Hausaufgaben lösen?

MarcoWarm 17. Okt 2005 14:02

Re: Jojo
 
Zitat:

Zitat von bttb930
Oder sollen wir lediglich Deine Hausaufgaben lösen?

So sieht mir das auch aus *lach*

Sierra 17. Okt 2005 14:06

Re: Jojo
 
Nein, das sind keine Hausaufgaben.
Wir haben einen halb fertigen Code im Unterricht bekommen und sollten den dann vervollständigen.
So und vPosition war nunmal schon drin.
Das Einzigste, was ich weiß ist, dass wenn ich vPosition ausklammere, läuft das Jojo auch nicht mehr runter.

Flocke 17. Okt 2005 14:11

Re: Jojo
 
@bttb930, MarcoWarm: Zu mSum siehe hier.

Ich denke Mal, vPosition ist die vertikale Position (Y-Koordinate).

DGL-luke 17. Okt 2005 14:13

Re: Jojo
 
buntstift scheint teil einer TCanvas-Kapselung mit deutschen Befehlen zu sein.

du musst einfach ab einem bestimmten Positionswert langsamer werden(position langsamer nach unten setzen) und dann wieder zurück nach oben kommen lassen(position nach oben setzen).

faux 17. Okt 2005 14:14

Re: Jojo
 
Zitat:

Zitat von Sierra
Nein, das sind keine Hausaufgaben.
Wir haben einen halb fertigen Code im Unterricht bekommen und sollten den dann vervollständigen.

Die zwei Zeilen wiedersprechen sich irgendwie... :roll:

himitsu 17. Okt 2005 14:14

Re: Jojo
 
Zitat:

Zitat von Sierra
Nein, das sind keine Hausaufgaben.
Wir haben einen halb fertigen Code im Unterricht bekommen und sollten den dann vervollständigen.

Also doch 'ne Art Hausaufgaben

Witzig sind ja die Klassen/Funktionen hatBildschirm(Bildschirm) und hatMaus(Maus) ... fragt mich blos nicht, was das ist :roll:
[add]
OK, DGL-luke's Antwort könnte dafür 'ne Erklärung sein :stupid:
[/add]

Und wenn ihr den Code vervollständigen solt, dann wird man euch doch etwas zu diesem Code gesagt haben.
Ich denke mal nicht, daß man euch einfach so irgendwas in die Han drückt und dann nur noch sagt "macht mal"...



[add]
ach ja ... auch hier fehlten mal wieder die beiden Vorschau- und Absenden-Button :wall:

MarcoWarm 17. Okt 2005 14:16

Re: Jojo
 
@Flocke: thx... sowas, was es nich alles gibt....
@Sierra: sorry daß ich das nich ernst genommen hab...

Sierra 17. Okt 2005 14:26

Re: Jojo
 
Kein Problem.
Aber das sind keine Hausaufgaben.
Wir sollen das eigentlich im Unterricht machen.
Aber ich mache das auch zu Hause, weil ich da Spaß dran hab.

Aber zurück zum Problem.
Wie soll ich das denn langsamer machen?

himitsu 17. Okt 2005 15:23

Re: Jojo
 
Im Grunde genommen müßtest du den Wert, welcher in vPosition ist, einfach nur verkleinern (subtrahieren) und wenn dann irgendwann dieser Wert negativ wird, dann dreht sich bestimmt sogar noch die Bewegungsrichtung um (langsamer werden ... stillstand ... in umgekehrter Richtung schneller werden)



[ot]PS: ich find sowas eh etwas bescheuert ...
OK, es ist bestimmt einfacher "deutsche" Befehle zu lernen, aber wenn dann derjenige sich mal das "echte" Pascal (Delphi) anguckt, dann versteht derjenige überhaupt nichts mehr.
Und zum helfen sind derartige Sachen in soeinem Forum auch nicht besonders gut geeignet ... denn nicht jeder kennt diese "komischen" Befehle...

Sierra 17. Okt 2005 16:03

Re: Jojo
 
Danke für den Tipp, aber ich komme nicht weiter.
Wie müsste denn der Befehl lauten, um es langsamer zu machen und dann umzukehren?

DGL-luke 17. Okt 2005 16:16

Re: Jojo
 
dumdidum... du kansnst einfach das jojo umschreiben.

Delphi-Quellcode:
procedure Jojo.bewege;
begin
hatStift.bewegeUm(zDy);
zFaden:=hatStift.vPosition;
end;
einfach aus dieser Funktion diese machen:

Delphi-Quellcode:
procedure Jojo.bewege(y:integer);
begin
hatStift.bewegeUm(y);
zFaden:=hatStift.vPosition;
end;
Das musst du auch oben in der Klasse machen!

und dann musst du das y immer selber angeben in deinem code.

Delphi-Quellcode:
//abwärts
jojo.bewege(5);
jojo.bewege(3);
//aufwärts
jojo.bewege(-3);
jojo.bewege(-5);
Im übrigen ist es eine Schweinerei, dass die klasse nicht TJojo heisst...

Sierra 17. Okt 2005 16:42

Re: Jojo
 
Das geht leider auch nicht.

Sierra 17. Okt 2005 17:28

Re: Jojo
 
Woran kann das liegen?
Ich habe in der Klasse alles so geschrieben, wie du es gesagt hast und im Hauptprogramm auch.

Airblader 17. Okt 2005 17:44

Re: Jojo
 
Zitat:

Zitat von Sierra
Das geht leider auch nicht.

Mit solchen Beschreibungen können Hellseher was anfangen - aber nicht wir ;)
hat sich überhaupt was geändert (muss es ja) ?

Achja...Pushen ist erst nach 24h erlaubt.

air


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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