Autor |
Beitrag |
wayne123
      
Beiträge: 52
|
Verfasst: 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.
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 public 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
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Fr 28.01.11 22:53
Du vergrößerst j immer, egal ob du schon am Rand bist.
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: 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
      
Beiträge: 182
Erhaltene Danke: 14
|
Verfasst: 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 
      
Beiträge: 52
|
Verfasst: 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
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Fr 28.01.11 23:53
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: 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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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 
      
Beiträge: 52
|
Verfasst: 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?
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 public 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. |
|
|
|