| Autor |
Beitrag |
julian290490
Hält's aus hier
Beiträge: 6
|
Verfasst: Fr 05.06.09 14:48
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
Einloggen, um Attachments anzusehen!
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: 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.
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: 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...
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
julian290490 
Hält's aus hier
Beiträge: 6
|
Verfasst: Fr 05.06.09 15:46
Ah entschuldigung hier ist die richtige Datei
Einloggen, um Attachments anzusehen!
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: 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.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: 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 
Hält's aus hier
Beiträge: 6
|
Verfasst: Fr 05.06.09 15:51
ohje  sorry ich bin da nicht ganz so fit^^
ich hoff diesmal stimmts?
Einloggen, um Attachments anzusehen!
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Fr 05.06.09 15:56
Und was genau verstehst du nicht?
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 
Hält's aus hier
Beiträge: 6
|
Verfasst: 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.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: 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 
Hält's aus hier
Beiträge: 6
|
Verfasst: 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
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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.
Delphi-Quelltext
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 
Hält's aus hier
Beiträge: 6
|
Verfasst: 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
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Sa 06.06.09 14:45
Ihr schreibt Prüfungen und du kennst nicht einmal randomize? 
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: 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; |
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 06.06.09 20:59
|
|