Seite 1 von 2

Delphi

Verfasst: Fr Dez 21, 2001 9:52 pm
von Bossie
Hi

Hab eines kleines programm gemacht, ist aber noch nicht fertig.
Habe: 2 Spinedits, 2 Shapes und einen Timer. Mit den Spinedits kann man die richtungen der Shapes(Kreise) und wie schnell sie sich bewegen sollen verändern. Ich will das so, wenn sich die Shapes(Kreise) bewegen z.B. nach schräg unter bewegen, dass sie dann vom Ende oder Wand des Formulars abprallen und dass es die ganze Zeit soweitergeht bis ich es beende. Wie kann ich es machen, dass Shapes(Kreise) von der des Formulars immer abprallen?

Delphi

Verfasst: Sa Dez 22, 2001 11:04 am
von DarkZero
Da brauchst du ne collision-detection, die alles außenrum überprüft, ob ein Rand des Shapes den Form Rand berührt. Leider läuft mein Delphi im Moment nicht, aber ich installiers heute neu, und dann seh ich mal, ob ich sowas zusammen bekomme.
Such solange mal hier

P.S.: "spühlen" schreibt man ohne "h"

[ 22. Dezember 2001: Beitrag editiert von: DarkZero ]

Delphi

Verfasst: Sa Dez 22, 2001 5:46 pm
von Katana
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Code:</font><HR><pre>
repeat
if (Shape1.Left + Shape1.Width = Shape2.Left) and (Shape2.Left + Shape2.Width = Shape1.Left) then
begin
leftright1 := -leftright1;
leftright2 := -leftright2;
end;
if (Shape1.Top - Shape1.Height = Shape2.Top) and (Shape2.Top - Shape2.Height = Shape1.Top) then
begin
updown1 := -updown1;
updown2 := -updown2;
end;
Shape1.Left := Shape1.Left + leftright1;
Shape2.Left := Shape2.Left + leftright2;
Shape1.Top := Shape1.Top + updown1;
Shape2.Top := Shape2.Top + updown2;
until abort;
</pre><HR></BLOCKQUOTE>
oder ähnlich!
Mit den Reglern mußte aufpassen... mußte noch reinschreiben, daß updown1/2 = SpinEdit1.Value und leftright1/2 = SpinEdit2.Value sein sollen (in die OnChange der SpinEdits). Da mußte noch überprüfen, ob das über oder unter 0 ist (wegen der Richtung).

Oh ... mir ist gerade aufgefallen ... ich hab' 'ne Kollisionsabfrage der beiden Shapes geschrieben ... aber die kannste ganz einfach für's Formular umbasteln Bild

Ach ja ... das ganze kommt in die "OnTimer" ^^

[ 22. Dezember 2001: Beitrag editiert von: Katana ]

Delphi

Verfasst: So Dez 23, 2001 7:13 pm
von DarkZero
Gut, damit hast du mir Arbeit abgenommen. THX

Delphi

Verfasst: Mo Dez 24, 2001 3:49 am
von Katana
*hehe*
Ich helf' doch gern' Bild

Ich hab' mir da auch so'n lustiges Ping-Pong spielchen gebastelt. Hat sogar DirectInput-Unterstützung!
Nur hätte ich auch gern' noch DirectPlay unterstützung für LAN/INet ... hab' zwar keine Ahnung, wer das über LAN daddeln würde, aber zum lernen wär's ganz gut Bild
Weiß da vielleicht wer Tuts?

@Dark: Dei Icon funzt net so ganz!

Delphi

Verfasst: Mo Dez 24, 2001 9:41 am
von DarkZero
Ich weiß, ich vergess immer es auf meinen Server zu laden.
Mit I-Net/Lan Unterstützung ist etwas kompliziert. Da mußt du DAtten an einen Port der IP schicken, der sagt, der Gegner bewegt sich soundso, aktualisiere den Shape, und dasselbe mit dem Ball.

Delphi

Verfasst: Mo Dez 24, 2001 1:14 pm
von Katana
Soviel weiß ich auch schon Bild
Ich hätte nur gerne 'n paar mehr Tutz!
Das einzige, was ich habe, ist für 'nen Chat und das ist ziemlich billig!

Delphi

Verfasst: Mo Dez 24, 2001 2:17 pm
von DarkZero
Hast du mal bei dem Link, den ich gepostet hab geschaut?

Delphi

Verfasst: Di Dez 25, 2001 1:47 am
von Katana
Jo, ich glaub' auf programmersheaven war ich schon ... naja, kann ja net schaden, nochmal reinzuschauen Bild

Delphi

Verfasst: Di Dez 25, 2001 1:14 pm
von Mysterious
<<<<<HIER>>>>>>>
vielleicht hift dir das. Ist mir nur spontan eingefallen.

Delphi

Verfasst: Di Dez 25, 2001 5:06 pm
von Bossie
Als was muss ich leftright1/2 und updown1/2 deklarien?

Delphi

Verfasst: Di Dez 25, 2001 5:29 pm
von Bossie
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Code:</font><HR><pre>procedure TForm1.Timer1Timer(Sender: TObject);
var x, y : Integer;
begin
x:= StrToInt(Spinedit1.Text);
y:= StrToInt(Spinedit2.Text);
Shape1.Left := Shape1.left +x;
Shape1.Top := Shape1.Top +y;
shape2.left:= shape2.left-x;
shape2.top:= shape2.top-y;
end;

end. </pre><HR></BLOCKQUOTE>
Mein jetziger Quellcode.
Wie kann am besten den quellcode im mein jetzigen quellcode am besten intigrieren?

Delphi

Verfasst: Di Dez 25, 2001 6:35 pm
von Katana
Also ... ich hab' das jetzt nochmal komplett neu geschrieben Bild
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Code:</font><HR><pre>
var
x,y: Integer;
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
if (x > 0) then
x := TrackBar1.Position
else
x := -TrackBar1.Position;
end;

procedure TForm1.TrackBar2Change(Sender: TObject);
begin
if (y > 0) then
y := TrackBar2.Position
else
y := -TrackBar2.Position;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
Shape1.Left := Shape1.Left + x;
Shape1.Top := Shape1.Top + y;
if (Shape1.Left <= 0) or (Shape1.Left + Shape1.Width >= Form1.Width) then
x := -x;
if (Shape1.Top <= 0) or (Shape1.Top + Shape1.Height >= Form1.Height) then
y := -y;
end;
</pre><HR></BLOCKQUOTE>

Form1.Borderstyle sollte bsSingle oder bsNone sein.
Ich würd' dir auch keine SpinEdit, sondern Trackbars's empfehlen.
Timer1.Interval hab' ich auf 10 gestellt.
MfG

Delphi

Verfasst: Di Dez 25, 2001 10:01 pm
von Bossie
Danke an alle, die geholfen haben.

Delphi

Verfasst: Di Dez 25, 2001 11:37 pm
von Katana
Kein Problem Bild
Ich hoffe zumindest, daß ich dir helfen konnte ^^