Hi und danke für die schnelle Antwort!
Unter Projekt/Units habe ich eine Starfield.lpr und eine Starfield.pas mit dem eigentlichen Quelltext.
Neukompilieren mit CTRL-F9 bringt leider nix, gleiches Ergbnis.
Hier einfach mal der Code, vielleicht hilfts...
Der Zeichenbefehl fehlt, beim Programmstart sehe ich trotzdem Sterne.
Außerdem sind etliche Werte (Spd, MaxZ etc) vom Rumprobieren noch geändert, aber wie gesagt, es hat ohnehin nichts bewirkt.
Wo könnte Lazarus die alten Informationen herbekommen bzw. wieso startet er nicht die aktuelle Version?
Code: Alles auswählen
UNIT StarfieldUnit;
{$MODE Delphi}
INTERFACE
USES
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
CONST
MaxSpd = 3;
MaxZ = 1000;
TYPE
TStar = RECORD
x, y, z, spd: double;
x2, y2: integer;
END;
TYPE
{ TForm1 }
TForm1 = CLASS(TForm)
Timer1: TTimer;
PROCEDURE FormCreate (Sender: TObject);
PROCEDURE FormKeyDown (Sender: TObject; VAR Key: word; Shift: TShiftState);
PROCEDURE Timer1Timer (Sender: TObject);
PROCEDURE FormMouseWheelDown (Sender: TObject; Shift: TShiftState; MousePos: TPoint; VAR Handled: boolean);
PROCEDURE FormMouseWheelUp (Sender: TObject; Shift: TShiftState; MousePos: TPoint; VAR Handled: boolean);
PROCEDURE FormDblClick (Sender: TObject);
private
{ Private declarations }
s: ARRAY[1..50000] OF TStar;
public
{ Public declarations }
END;
VAR
Form1: TForm1;
IMPLEMENTATION
{$R *.lfm}
VAR
spd: double = 1;
MaxStars: integer = 5000;
Farbe: TColor;
Entf: byte = 255;
Breite, Hoehe: integer;
PROCEDURE TForm1.FormCreate (Sender: TObject);
VAR
i: integer;
BEGIN
randomize;
Farbe := clBlack;
Breite := Form1.Width;
Hoehe := Form1.Height;
FOR i := 1 TO MaxStars DO
BEGIN
s[i].z := random (MaxZ) + 1;
END;
END;
PROCEDURE TForm1.Timer1Timer (Sender: TObject);
VAR
i, anzahl: integer;
StarCol: TColor;
Teil: extended;
BEGIN
FOR i := 1 TO Maxstars - 1 DO
BEGIN
s[i].z := s [i].z - s [i].spd;
IF s [i].z < 0.01 THEN
BEGIN
s[i].x := random (Breite) - Breite div 2;
s[i].y := random (Hoehe) - Hoehe div 2;
s[i].z := random (MaxZ) + 1;
s[i].spd := Spd;
END;
s[i].X2 := round (Entf * s [i].x / s [i].z + Breite / 2);
s[i].Y2 := round (Entf * s [i].y / s [i].z + Hoehe / 2);
StarCol := RGBToColor (255, 255, 255);
END;
END;
PROCEDURE TForm1.FormMouseWheelDown (Sender: TObject; Shift: TShiftState; MousePos: TPoint; VAR Handled: boolean);
BEGIN
IF spd > 0 THEN
spd := spd - 0.5;
Caption := 'Form1 ' + FloatToStr (spd);
END;
PROCEDURE TForm1.FormMouseWheelUp (Sender: TObject; Shift: TShiftState; MousePos: TPoint; VAR Handled: boolean);
BEGIN
spd := spd + 0.5;
Caption := 'Form1 ' + FloatToStr (spd);
END;
PROCEDURE TForm1.FormDblClick (Sender: TObject);
BEGIN
IF Farbe = clblack THEN
BEGIN
Farbe := clwhite;
MaxStars := 10000;
spd := 14;
END
ELSE IF farbe = clwhite THEN
BEGIN
Farbe := clblack;
Form1.Color := clyellow;
Form1.Color := clblack;
MaxStars := 5000;
spd := 1;
END;
END;
END.