Entwickler-Ecke
Multimedia / Grafik - Schon wieder Kreis bewegen
wayne123 - Fr 28.01.11 22:37
Titel: Schon wieder Kreis bewegen
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.
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 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 - Fr 28.01.11 22:53
Du vergrößerst j immer, egal ob du schon am Rand bist.
wayne123 - 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 - 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 ?
http://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 - 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 - Fr 28.01.11 23:53
wayne123 hat folgendes geschrieben : |
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!?
wayne123 hat folgendes geschrieben : |
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 [
http://www.delphi-treff.de/object-pascal/delphi-styleguide/] :les:
wayne123 - 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?
wayne123 - 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?
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 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. |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!