MaxMüller123
Grünschnabel
Hi,
ein Kumpel und ich programmiern für die Schule ein kleines Spiel. Hierfür bräuchte ich die Animation eines Flußes in 2d.
Trotz mittlerweilen schon ein paar Jahren Info bin ich nun wirklich nicht so der Pro, von daher bitte Rücksicht nehmen sollte die Frage etwas bescheuert klingen.
Die Flußanmation soll nicht sehr aufwendig sein und vertikal verlaufen.
In der Schule hatten wir mal ne Sinuskurve, diese wollte ich nun verwenden, indem ich mehrere Sinuskruven eng nebeneinander ablaufen lasse ( Farbe: Blau --> Fluss )
Der Quelltext sieht so aus:
Nun 2 Fragen hierzu:
1. Wie bekomme ich diese Sinuskurven in die vertikale ( wenn möglich biite auf einfachen Niveau erklärt ;-D )
2. Bei der Animation entsteht ein Flackern, wie lässt sich dieses ausschalten?
Danke schonmal, hoffe euch nicht mit meinem Text erschlagen zu haben,
Mfg Martin
PS: Falls jemand noch eine andere Methode zur Animation des Flußes einffällt, die nicht allzu kompliziert ist, nur her damit ...
ein Kumpel und ich programmiern für die Schule ein kleines Spiel. Hierfür bräuchte ich die Animation eines Flußes in 2d.
Trotz mittlerweilen schon ein paar Jahren Info bin ich nun wirklich nicht so der Pro, von daher bitte Rücksicht nehmen sollte die Frage etwas bescheuert klingen.
Die Flußanmation soll nicht sehr aufwendig sein und vertikal verlaufen.
In der Schule hatten wir mal ne Sinuskurve, diese wollte ich nun verwenden, indem ich mehrere Sinuskruven eng nebeneinander ablaufen lasse ( Farbe: Blau --> Fluss )
Der Quelltext sieht so aus:
Code:
...
var sh1: array[1..100] of tshape;
sh2: array[1..100] of tshape;
sh3: array[1..100] of tshape;
sh4: array[1..100] of tshape;
sh5: array[1..100] of tshape;
zeit:integer=0;
start:boolean=false;
interferenz:boolean=false;
Amplitude, Frequenz: integer;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
For i:= 1 To 100 Do begin
sh1[i]:=tshape.create(form1);
sh1[i].parent:=form1;
sh1[i].Width:=15;
sh1[i].Height:=15;
sh1[i].Shape:=stRoundSquare;
sh1[i].Brush.color:=clblue;
sh1[i].Pen.color:=clblue;
sh1[i].Top:=216;
sh1[i].Left:=18+i*5;
end;
For i:= 1 To 100 Do begin
sh2[i]:=tshape.create(form1);
sh2[i].parent:=form1;
sh2[i].Width:=15;
sh2[i].Height:=15;
sh2[i].Shape:=stRoundSquare;
sh2[i].Brush.color:=clblue;
sh2[i].Pen.color:=clblue;
sh2[i].Top:=216;
sh2[i].Left:=18+i*5;
end;
For i:= 1 To 100 Do begin
sh3[i]:=tshape.create(form1);
sh3[i].parent:=form1;
sh3[i].Width:=15;
sh3[i].Height:=15;
sh3[i].Shape:=stRoundSquare;
sh3[i].Brush.color:=clblue;
sh3[i].Pen.color:=clblue;
sh3[i].Top:=216;
sh3[i].Left:=18+i*5;
end;
For i:= 1 To 100 Do begin
sh4[i]:=tshape.create(form1);
sh4[i].parent:=form1;
sh4[i].Width:=15;
sh4[i].Height:=15;
sh4[i].Shape:=stRoundSquare;
sh4[i].Brush.color:=clblue;
sh4[i].Pen.color:=clblue;
sh4[i].Top:=216;
sh4[i].Left:=18+i*5;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var i: integer;
begin
Amplitude:=StrToInt(EAmplitude.Text);
Frequenz:=StrToInt(EFrequenz.Text);
inc(zeit);
For i:= 1 To 100 Do begin
sh1[i].Top:=220+round(Amplitude*sin((2*pi/Frequenz)*(zeit-sh1[i].Left/5)));
end;
For i:= 1 To 100 Do begin
sh2[i].Top:=235+round(Amplitude*sin((2*pi/Frequenz)*(zeit-sh2[i].Left/5)));
end;
For i:= 1 To 100 Do begin
sh3[i].Top:=250+round(Amplitude*sin((2*pi/Frequenz)*(zeit-sh3[i].Left/5)));
end;
For i:= 1 To 100 Do begin
sh4[i].Top:=265+round(Amplitude*sin((2*pi/Frequenz)*(zeit-sh4[i].Left/5)));
end;
...
Nun 2 Fragen hierzu:
1. Wie bekomme ich diese Sinuskurven in die vertikale ( wenn möglich biite auf einfachen Niveau erklärt ;-D )
2. Bei der Animation entsteht ein Flackern, wie lässt sich dieses ausschalten?
Danke schonmal, hoffe euch nicht mit meinem Text erschlagen zu haben,
Mfg Martin
PS: Falls jemand noch eine andere Methode zur Animation des Flußes einffällt, die nicht allzu kompliziert ist, nur her damit ...