Autor Beitrag
eindelphinutzer
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mo 21.02.05 15:15 
Hi,

bin neu in diesem Forum und hoffe inständig auf eure Unterstützung.
Es geht um folgendes:
Mein Programm lässt eine "Rakete" senkrecht beschleunigen, wobei die Beschleunigung in der nächsten Version mithilfe physikalischer Formeln ablaufen sollte.
Mein Hauptproblem besteht darin, dass ich die Rakete mit Hilfe der Pfeiltasten steuern möchte.
Weiterhin würde ich die Shapes durch ein Image einer Rakete ersetzen.
Meine Frage ist nun, wie sich dies bewerkstelligen ließe.

ausblenden volle Höhe 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:
unit USilvester;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Shape1: TShape;
    Shape2: TShape;
    Timer1: TTimer;
    Button1: TButton;
    Timer2: TTimer;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  nr:integer;
  shape3:Tshape;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
timer1.enabled:=false;
timer1.interval:=100;
timer2.enabled:=false;
timer2.interval:=2;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
nr:=0;
timer1.enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
nr:=nr+1;
shape1.top:=shape1.top-nr;
shape2.top:=shape2.top-nr;
if shape1.top<50 then
  begin
  timer1.enabled:=false;
  shape3:=Tshape.create(form1);
  shape3.parent:=form1;
  shape3.shape:=stcircle;
  shape3.top:=shape2.top-50;
  shape3.left:=shape2.left-50;
  shape3.width:=10;
  shape3.height:=10;
  shape3.brush.color:=clyellow;
  shape3.brush.style:=bssolid;
  shape3.pen.color:=clyellow;
  timer2.enabled:=true;
  nr:=0;
  end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
nr:=nr+1;
shape3.width:=shape3.width+nr;
shape3.height:=shape3.height+nr;
if shape3.width>200 then timer2.enabled:=false;
end;

end.


Vielen Dank im voraus.

Moderiert von user profile iconAXMD: Code- durch Delphi-Tags ersetzt.
Wizard of OS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win95, Win98, Win2000, WinNT, Win XP
D5
BeitragVerfasst: Di 22.02.05 09:10 
z.B. in FormKeyDown folgende Anweisungen

(KeyPreview des Forms auf true setzen)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
case Key of
   VK_LEFT:  dec(xpos,dx);
   VK_RIGHT: inc(xpos,dx);
end;

Rakete.Left := xpos;
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Di 22.02.05 17:09 
Du nimmst eine Image komponente und zeichnes dort ein bild z.b. so:
ausblenden Delphi-Quelltext
1:
image1.canvas.draw(...)// kenn jetzt garnicht die paramenter					

und steuern tus du wie es Wizard of OS gesagt hast....
achja du nimmst am beste eine Image liste....

_________________
MFG
Michael Springwald, "kann kein englisch...."
der_zaehe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

WinXP SP2
D6 Pers, D2005 Prof, VS2005
BeitragVerfasst: Di 22.02.05 17:13 
wie du deine rakete steuerst, hängt von der formel ab, die du verwendest. Ich denk mal, du musst da vektoriell über winkelfunktionen eine lineare komponente einfliessen lassen, die sich seitlich von der rakete wegrichtet.
Dazu würde ich dir empfehlen, gut in physik zu sein, sonst wird dat nix :mrgreen:

oder ich hab deine problem falsch verstanden und es ist mehr programmiertechnischer natur denn physikalischer

_________________
[inspirationslos]
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Di 22.02.05 21:56 
Naja, das ist 10. Klasse Stoff. Von der Physik her sollte es ohne grössere Probleme zu machen sein.
Nur das ganze in Delphi umzusetzten dürfte eine grösseres Problem werden ;)

Trotzdem viel Erfolg!
ossix
Hält's aus hier
Beiträge: 15

win 2000
D7 Pers
BeitragVerfasst: Mi 23.02.05 00:07 
das ist simpelste vektorrechnung...

wenn auf die pfeiltaste gedrückt wird wird auf den raketenbewegungsvektor halt noch ein vektor festgelegter größe (da ist tuning angesagt, je nachdem wie du das ganze handlest und wie stark das ding beschleunigen soll) in richtung der raketenspitze addiert.
zusätzlich wird pro frame (oder pro zeiteinheit, je nach dem ob du frame-based-movement oder time-based-movement implementieren willst) die raketen position um den raketenvektor verschoben - wirklich nicht schwer...
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Sa 05.03.05 15:02 
ich versthe nicht was da so schwer sein soll, eine rakte fligt doch nur in y richtung oder nicht ? also einfach nur y+1 ??? nagut und eine zeitschleife und das wars doch auch schon....

_________________
MFG
Michael Springwald, "kann kein englisch...."
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Sa 05.03.05 18:18 
Also wenn ich den Threadersteller richtig verstanden habe dann soll das eine richtige Rackete sein, wo die Flugbahn mit dem Schrägen Wurf berechnet wird.
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Sa 05.03.05 18:40 
du meinst also so das ist nicht nur einfach nach oben gehen soll sonndern das es möglich sein soll richtige flugbahnen anzugeben z.b.: von a nach b oder so ?

_________________
MFG
Michael Springwald, "kann kein englisch...."