Entwickler-Ecke
Sonstiges (Delphi) - erklärung benötigt!
julian290490 - Fr 05.06.09 14:48
Titel: erklärung benötigt!
Hallo Leute,
ich mach dieses jahr meine Fachhochschulreife und habe da am Montag meine Prüfung in Delphi das meiste Zeug hab ich auch kapiert nur hat mir jetzt eine Klassenkammeradin ein Programm geschickt das man auch können muss und dieses blick ich eben voll nicht, und sie kanns mir auch nicht erklären weil sie total schlecht in delphi ist...
Ich lade das jetzt einfach mal hier hoch wäre nett wenn es sich jemand anschauen würde und mir erklären könnte (eigentlich sind mir auch nur diese real variablen nicht ganz klar und die erste schleife)
also ich sag schonmal vielen danke im Voraus
Gruß Julian
jakobwenzel - Fr 05.06.09 15:12
In der Exe-Datei ist der Quelltext nicht mehr rekonstruieren, du musst also das ganze Projekt hochladen, am besten gezippt.
platzwart - Fr 05.06.09 15:28
Hallo Julian,
ohne Quelltext können wir dir hier auch nicht helfen, du hast nur die EXE angehängt...
julian290490 - Fr 05.06.09 15:46
Ah entschuldigung hier ist die richtige Datei
Marc. - Fr 05.06.09 15:47
Die DPR (Delphi Projekt Datei) alleine nutzt nichts. Du musst uns schon auch die PAS (Pascal / Source-Datei) geben.
Grüße,
Marc
Andreas L. - Fr 05.06.09 15:48
julian290490 hat folgendes geschrieben : |
| Ah entschuldigung hier ist die richtige Datei |
Ist nur die Projektdatei, du musst Blumenwerfen.pas und evtl. Blumenwerfen.dfm hochladen.
julian290490 - Fr 05.06.09 15:51
ohje :D sorry ich bin da nicht ganz so fit^^
ich hoff diesmal stimmts?
Andreas L. - Fr 05.06.09 15:56
Und was genau verstehst du nicht?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94:
| unit Blumenwerfen;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls;
type TForm1 = class(TForm) Image1: TImage; Image3: TImage; Image2: TImage; Timer1: TTimer; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormKeyDown(Sender:TObject; var Key:Word; Shift: TShiftState); private public end;
var Form1: TForm1; x,punk, Blumex, Blumey :integer; sx, sy, vx, vy, g, t, dt :real;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin image2.transparent:=true; image3.transparent:=true; sx:=80; sy:=140; dt:=0.2; t:=0; g:=9.81; punk:=0; vx:=40;
end;
procedure TForm1.Timer1Timer(Sender: TObject); begin setfocus; vy:= g*t;
sx:=sx+vx*dt; sy:=sy+vy*dt; t:=t+dt; Blumex:=round(sx); Blumey:=round(sy); image2.Left:=Blumex; image2.top:=Blumey; If (sx > 550) or (sy > 400) then begin sx:=80; sy:=140; t:=0; end; If (Blumey+40>image3.top+50) and (Blumex>image3.left+33) and (Blumex+40<image3.Left+115) then begin punk := punk + 1; sx:=80; sy:=140; t:=0; label1.Caption:=inttostr(punk); vx:=30+round(random(40)); end; end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = vk_left then begin image3.Left:= image3.left-5; if image3.left < 100 then image3.left := 100; end; if Key = vk_right then begin image3.Left:= image3.left+5; if image3.left > 530 then image3.left := 530; end; end;
end. |
julian290490 - Fr 05.06.09 16:07
najaaa also ich weis nicht was x,punkt bedeutet
dann was es mit real auf sich hat (aber ich glaub das ist irgendwie so für zufallsgeneration kann das sein?) dann wofür in diesem falle vx,vy,g,t und dt steht (g ist glaub erdanziehungskraft?)
dann diesen teil hier
sx:=80; sy:=140; dt:=0.2; t:=0; g:=9.81;
punk:=0; vx:=40;
weis ich absolut nichts mit anzufangen auser das g eben bestimmt für die erdanziehungskraft steht
aber warum sx:=80 und sy:=140 ist kapier ich z.b. auch nicht das werden ja wahrscheinlich die koordinaten des schiffes sein nehm ich an
und die schleife kapier ich eben nicht da ich ja eben eig auch garnicht weis für was das ganze zeug steht
Andreas L. - Fr 05.06.09 16:17
x, punkt sind globale Integer-Variablen also Ganzzahlen (1, 5, 27, etc.). So ist das vllt. besser zu sehen:
Delphi-Quelltext
1: 2: 3: 4:
| var Form1: TForm1; x,punk, Blumex, Blumey: integer; sx, sy, vx, vy, g, t, dt: real; |
Die anderen Variablen sind vom Typ Real also Fließkommazahlen (0,1 2,3 etc.).
Beim Timer handelt es sich um ein Objekt das immer beim eingestellten Interval den Code vom OnTimer-Ereignis ausführt. Ist also eigentlich keine richtige Schleife. Weil dein Timer nie deaktiviert wird (Eigenschaft Enabled) wird er eben unendlich lange bzw. bis zum Programmende ausgeführt.
julian290490 - Fr 05.06.09 21:53
okay gut dankeschön das hat mir schonmal weiter geholfen
aber kannst du mir das hier noch erklären
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| vy:= g*t;
sx:=sx+vx*dt; sy:=sy+vy*dt; t:=t+dt; Blumex:=round(sx); Blumey:=round(sy); image2.Left:=Blumex; image2.top:=Blumey; |
was da eben genau passiert
und warum z.b. sx:=sx+vx*dt ich blick das irgendwie echt nicht
und zu guter letzt habe ich noch dazu eine frage
Delphi-Quelltext
1: 2:
| If (Blumey+40>image3.top+50) and (Blumex>image3.left+33) and (Blumex+40<image3.Left+115) then |
also ich kapier die bedingung schon aber ähm da steht ja image3.left und so also bei den programmen davor musste ich das immer zuerst einlesen und später wieder auslesen wieso wird das hier irgendwie nicht benötigt?
Moderiert von
Narses: Delphi-Tags hinzugefügt
Delete - Fr 05.06.09 23:07
Ohne das Programm gesehen zu haben, würde ich sagen das bewegt sich etwas. Und wenn ich mir diese Formel so angucke:
vy:= g*t;
Fliegt es sogar.
Was die Variablennamen bedeuten kann man nur vermuten. Aber da es um das Thema Bewegung und Wurf geht, würde ich jetzt messerscharf mal kombinieren, dass die Variablen die momentane Geschwindigkeit in Richtung der Achsen speichern. Beispiel:
vx ist vermutlich die Geschwindigkeit in Richtung der X-Achse.
Schlag mal in deiner Physik Formelsammulung unter Wurf oder Schrägem Wurf nach. Physik 7. Klasse sollte das sein und solche rudimentären Formeln sollte man zumindest noch erkennen, wenn man sie sieht, auch wenn man sie nicht mehr auswendig weiß.
Blumex:=round(sx);
Das Ergebnis wird gerundet, da es nur ganze Pixel gibt.
mage2.Left:=Blumex;
Das Image wird an die angegebene Position verschoben.
julian290490 - Sa 06.06.09 14:08
okaydankeschön für die antworten
ähm eine kleine frage hätte ich aber noch des hat jetzt garnix mit dem programm zu tun... aber ähm wir sollten auch objekte von oben nach unten fallen lassen können (was ja kein problem ist) allerdings immer an einer anderen stelle also eben das es zufall ist wo das teil runterfliegt könnt mir dazu jemand einen befehl sagen?
Dude566 - Sa 06.06.09 14:45
Ihr schreibt Prüfungen und du kennst nicht einmal randomize? :shock:
ffgorcky - Sa 06.06.09 14:57
Wobei Du natürlich
randomize; erst mal zur Initialisierung der Funktion aufrufen musst, und danach dann eigentlich nur noch
fallposition:=random(gewuenschterMaximalwert);
wobei Du das dann - wenn der Wert z.B. zwischen 1 und 100 liegen sollte - so schreiben müsstest:
Delphi-Quelltext
1:
| fallposition:=random(100)+1; |
Delete - Sa 06.06.09 20:59
Dude566 hat folgendes geschrieben : |
| Ihr schreibt Prüfungen und du kennst nicht einmal randomize? :shock: |
Na ja, was willst du verlagen? Sollen die Schüler aller Funktionen der VCL auswendig können? In der Regel werden die Funktionen genannt, die benötigt werden. Wir sollten in der Abschlussprüfung ein Programm schreiben (auf dem Papier), da wurden uns die zur Verfügung stehenden Funktionen genannt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!