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

user profile iconjulian290490 hat folgendes geschrieben Zum zitierten Posting springen:
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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  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;
  // hier die Endlosschleife zur Bewegung
  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;
  // Blume zurück an Anfang
  If (sx > 550or (sy > 400then
  begin
    sx:=80; sy:=140; t:=0;
  end;
  // Trefferabfrage
  If (Blumey+40>image3.top+50and (Blumex>image3.left+33and
      (Blumex+40<image3.Left+115then
      begin
        punk := punk + 1;
        // Blume zurück
        sx:=80; sy:=140; t:=0;
        label1.Caption:=inttostr(punk);
        // X-Geschwindigkeit variieren
        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+50and (Blumex>image3.left+33and
      (Blumex+40<image3.Left+115then

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 user profile iconNarses: 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.


Delphi-Quelltext
1:
vy:= g*t;                    

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

user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
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.