Delphi

Hardware, Software, Webdesign & Coding.

Moderator: Katana

Benutzeravatar
Bossie
Beiträge: 230
Registriert: Mo Sep 10, 2001 12:01 am

Delphi

Beitrag 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?
Benutzeravatar
DarkZero
Beiträge: 2342
Registriert: So Jul 15, 2001 12:01 am

Delphi

Beitrag 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 ]
Benutzeravatar
Katana
Beiträge: 5337
Registriert: So Jan 02, 2000 1:01 am

Delphi

Beitrag 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 ]
Benutzeravatar
DarkZero
Beiträge: 2342
Registriert: So Jul 15, 2001 12:01 am

Delphi

Beitrag von DarkZero »

Gut, damit hast du mir Arbeit abgenommen. THX
Benutzeravatar
Katana
Beiträge: 5337
Registriert: So Jan 02, 2000 1:01 am

Delphi

Beitrag 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!
Benutzeravatar
DarkZero
Beiträge: 2342
Registriert: So Jul 15, 2001 12:01 am

Delphi

Beitrag 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.
Benutzeravatar
Katana
Beiträge: 5337
Registriert: So Jan 02, 2000 1:01 am

Delphi

Beitrag 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!
Benutzeravatar
DarkZero
Beiträge: 2342
Registriert: So Jul 15, 2001 12:01 am

Delphi

Beitrag von DarkZero »

Hast du mal bei dem Link, den ich gepostet hab geschaut?
Benutzeravatar
Katana
Beiträge: 5337
Registriert: So Jan 02, 2000 1:01 am

Delphi

Beitrag von Katana »

Jo, ich glaub' auf programmersheaven war ich schon ... naja, kann ja net schaden, nochmal reinzuschauen Bild
Mysterious
Beiträge: 395
Registriert: Sa Jun 30, 2001 12:01 am

Delphi

Beitrag von Mysterious »

<<<<<HIER>>>>>>>
vielleicht hift dir das. Ist mir nur spontan eingefallen.
Benutzeravatar
Bossie
Beiträge: 230
Registriert: Mo Sep 10, 2001 12:01 am

Delphi

Beitrag von Bossie »

Als was muss ich leftright1/2 und updown1/2 deklarien?
Benutzeravatar
Bossie
Beiträge: 230
Registriert: Mo Sep 10, 2001 12:01 am

Delphi

Beitrag 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?
Benutzeravatar
Katana
Beiträge: 5337
Registriert: So Jan 02, 2000 1:01 am

Delphi

Beitrag 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
Benutzeravatar
Bossie
Beiträge: 230
Registriert: Mo Sep 10, 2001 12:01 am

Delphi

Beitrag von Bossie »

Danke an alle, die geholfen haben.
Benutzeravatar
Katana
Beiträge: 5337
Registriert: So Jan 02, 2000 1:01 am

Delphi

Beitrag von Katana »

Kein Problem Bild
Ich hoffe zumindest, daß ich dir helfen konnte ^^
Antworten