![]() |
Jojo
Hi!
Ich probiere gerade ein Jojo zu programmieren. Der Code und das Objekt sehen so aus.
Delphi-Quellcode:
Und die Klasse Jojo
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.
Delphi-Quellcode:
Jetzt würde ich gerne wissen, wie ich es schaffe, dass das Jojo anhält und es wieder zurückläuft.
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. Außerdem würde ich gerne wissen, was der Befehl "vPosition" macht. Danke. |
Re: Jojo
????? was bitte ist die Klasse Buntstift *grübel*
poste doch bitte "richtigen" Delphi-Code... dann kann man es wenigstens nachvollziehen |
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? |
Re: Jojo
Zitat:
|
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. |
Re: Jojo
@bttb930, MarcoWarm: Zu mSum siehe
![]() Ich denke Mal, vPosition ist die vertikale Position (Y-Koordinate). |
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). |
Re: Jojo
Zitat:
|
Re: Jojo
Zitat:
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: |
Re: Jojo
@Flocke: thx... sowas, was es nich alles gibt....
@Sierra: sorry daß ich das nich ernst genommen hab... |
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? |
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... |
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? |
Re: Jojo
dumdidum... du kansnst einfach das jojo umschreiben.
Delphi-Quellcode:
einfach aus dieser Funktion diese machen:
procedure Jojo.bewege;
begin hatStift.bewegeUm(zDy); zFaden:=hatStift.vPosition; end;
Delphi-Quellcode:
Das musst du auch oben in der Klasse machen!
procedure Jojo.bewege(y:integer);
begin hatStift.bewegeUm(y); zFaden:=hatStift.vPosition; end; und dann musst du das y immer selber angeben in deinem code.
Delphi-Quellcode:
Im übrigen ist es eine Schweinerei, dass die klasse nicht TJojo heisst...
//abwärts
jojo.bewege(5); jojo.bewege(3); //aufwärts jojo.bewege(-3); jojo.bewege(-5); |
Re: Jojo
Das geht leider auch nicht.
|
Re: Jojo
Woran kann das liegen?
Ich habe in der Klasse alles so geschrieben, wie du es gesagt hast und im Hauptprogramm auch. |
Re: Jojo
Zitat:
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 07:56 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-2025 by Thomas Breitkreuz