Autor Beitrag
wayne123
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: Fr 28.01.11 22:37 
Okay, da ich ja gemerkt habe, dass das bei meinem ersten Versuch zu kompliziert war und ich das auch alleine noch einmal und auch in der Form machen wollte, hab ich das Projekt nochmal neu probiert. Jetzt hab ich nur ein Problem. Ich benutz ne for-to Schleife, die alles immer wieder abspielt und alle if-then abfragt. Jetzt hab ich nur das Problem, dass er den Kreis abprallen lässt, aber auch nur während eben der Kreis den Rand berührt. Ergebnis: Der Ball rollt am Rand entlang aus dem Bild. Weiß jemand, wie ich das umgehen kann? Ich glaub es liegt an der for-to Schleife nur ich weiß keine Alternative dazu.
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:
unit UnitBewegen;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var w,x,y,z,i,j,a: integer;
begin
w:=100;
x:=200;
y:=300;
z:=400;
i:=0;
j:=0;
for a:= 1 to 1000 do
begin
refresh;
Canvas.Ellipse(w+i,x+j,y+i,z+j);
inc(i);
inc(j);
if z+j>= Clientheight then
j:=j-1



end;
end;
end.
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Fr 28.01.11 22:53 
Du vergrößerst j immer, egal ob du schon am Rand bist.
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: Fr 28.01.11 22:57 
Ja gut, das hab ich geändert, aber er verkleinert j trotzdem bei mir nur in diesem einem Moment, wenn ich den Rand berühre.
guinnes
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 182
Erhaltene Danke: 14



BeitragVerfasst: Fr 28.01.11 23:35 
Ich find das absolut geil, wenn Leute einem zwar ein Loch in den Bauch fragen, aber nicht das geringste aus den Antworten lernen :
1. Warum formatierst du deinen Quältext immer noch nicht ? www.delphi-forum.de/viewtopic.php?t=103817
2. Was passiert, wenn ein Teil irgendwo abprallt ? Genau, die Richtung ändert das Vorzeichen !! Und was machst du ?
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: Fr 28.01.11 23:40 
Wie man formatiert, weiß ich nicht und da mir dann gesagt wurde, wo ein end fehlte war der Fehler ja weg. Alleine aber j:=-j zu schreiben reicht aber nicht, oder?
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Fr 28.01.11 23:53 
user profile iconwayne123 hat folgendes geschrieben Zum zitierten Posting springen:
Ja gut, das hab ich geändert, aber er verkleinert j trotzdem bei mir nur in diesem einem Moment, wenn ich den Rand berühre.

Und was könnten wir dagegen unternehmen? Vielleicht eine boolsche Variable einführen, die sich merkt, ob wir +1 oder -1 rechnen sollten!?

user profile iconwayne123 hat folgendes geschrieben Zum zitierten Posting springen:
Wie man formatiert, weiß ich nicht und da mir dann gesagt wurde, wo ein end fehlte war der Fehler ja weg.

Müssen wir dir androhen, keine Lösungen mehr zu posten? :evil: Sicherlich nicht. Lesen: Delphi-Styleguide :les:
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: Fr 28.01.11 23:57 
Achso jetzt hab ich auch verstanden, was ihr alle mit formatieren meint^^. Em, aber was ist eine boolsche Variabel? Ich wollts eig. so billig wie möglich halten, sind die denn kompliziert?
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Sa 29.01.11 00:03 
Boolsche Variablen sind Variablen die genau zwei mögliche Werte annehmen können. Entweder true oder false, also wahr oder falsch. Sind supereinfach zu bedienen und das geilste ist: Man kann Boolsche Operatoren anwenden um diese Wahrheitswerte zu verknüpfen. Mehr dazu dann aber in den Tutorials, die ich dir dringend empfehle:

Christians Crashkurs
Delphi-Wikibook

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: Sa 29.01.11 00:09 
Okay, die guck ich mir dann erstmal an.
Wär denn die Formatierung so richtig oder hab ich was übersehen, bzw. fehlt etwas?

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:
unit UnitBewegen;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var w,x,y,z,i,j,a: integer;
begin
w := 100;
x := 200;
y := 300;
z := 400;
i := 0;
j := 0;
for a := 1 to 1000 do
begin
  refresh;
  Canvas.Ellipse(w+i, x+j, y+i, z+j);
  inc(i);
  if z+j >= Clientheight then
  begin
    j := -j
  end
  else
    inc(j);
  end;
end;
end.