type
TMot = record
Chaine : String;
Colonne : Integer;
Red, Green, Blue : Byte;
Index : Double;
Longueur : Integer;
TailleFont : Integer;
Vitesse : Double;
end;
private
{ Private declarations }
Liste : TList;
SavePoint : TPoint;
NbColonnes : Integer;
NbLignes : Integer;
TableauChaine : Array of String;
procedure CreerMot;
const
NbMotCreate = 20;
NbMotMax = 80;
//
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Close;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
Index, Index2 : Integer;
PMot : ^TMot;
begin
for Index := 0 to Liste.Count - 1 do
begin
PMot := Liste.Items[Index];
Canvas.Font.Size := PMot.TailleFont;
for Index2 := 0 to PMot.Longueur - 1 do
begin
Canvas.Font.Color := clBlack;
Canvas.TextOut(10 + PMot.Colonne * 20,
5 + Round((PMot.Index - PMot.Vitesse - Index2) * 20),
Copy(PMot.Chaine, Index2 + 1, 1));
Canvas.Font.Color:= RGB(PMot.Red, PMot.Green, PMot.Blue);
if Index2 > 4 then Canvas.Font.Color := RGB(PMot.Red, PMot.Green, PMot.Blue)
else Canvas.Font.Color := RGB((PMot.Red + (4 - Index2) * (255 - PMot.Red) div 4),
(PMot.Green + (4 - Index2) * (255 - PMot.Green) div 4),
(PMot.Blue + (4 - Index2) * (255 - PMot.Blue) div 4));
Canvas.TextOut(10 + PMot.Colonne * 20,
5 + Round((PMot.Index - Index2) * 20),
Copy(PMot.Chaine, Index2 + 1, 1));
end;
PMot.Index := PMot.Index + PMot.Vitesse;
end;
for Index := Liste.Count - 1 downto 0 do
begin
PMot := Liste.Items[Index];
if PMot.Index - PMot.Longueur >= NbLignes then
begin
Dispose(Liste.Items[Index]);
Liste.Delete(Index);
end;
end;
if Liste.Count >= NbMotMax then Exit;
CreerMot;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
Index : Integer;
begin
Randomize;
Liste := TList.Create;
WindowState := wsMaximized;
SavePoint.x := Mouse.CursorPos.x;
SavePoint.y := Mouse.CursorPos.y;
NbColonnes := Round(Screen.Width / 20);
NbLignes := Round(Screen.Height / 20);
Setlength(TableauChaine, 5);
TableauChaine[0] := ' SU DNUORA LLA SI XIRTAM EHT';
TableauChaine[1] := ' NOISIVELET HCTAW UOY NEHW EREHT SI TI';
TableauChaine[2] := ' OEN DLROWMAERD A NI EVIL UOY';
TableauChaine[3] := ' ENO EHT SI EH';
TableauChaine[4] := ' SUEHPROM YTINIRT OEN';
for Index := 0 to NbMotCreate - 1 do CreerMot;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
Close;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil(Liste);
end;
procedure TForm1.CreerMot;
var
Index : Integer;
PMot : ^TMot;
ColonneTrouvee : Boolean;
ChoixColonne : Integer;
PMot2 : ^TMot;
NombreTest : Integer;
begin
New(PMot);
PMot.Chaine := '';
NombreTest := 0;
ColonneTrouvee := False;
ChoixColonne := 0;
while (not ColonneTrouvee) and (NombreTest < 10) do
begin
ChoixColonne := Random(NbColonnes);
Inc(NombreTest, 1);
if Liste.Count = 0 then ColonneTrouvee := True;
for Index := 0 to Liste.Count - 1 do
begin
PMot2 := Liste.Items[Index];
if PMot2.Colonne = ChoixColonne then
begin
if PMot2.Index - PMot2.Longueur >= 1 then
begin
ColonneTrouvee := True;
Break;
end
else Break;
end
else if Index = Liste.Count - 1 then ColonneTrouvee := True;
end;
end;
PMot.Colonne := ChoixColonne;
PMot.Green := Random(155) + 100;
PMot.Red := 20 + 105 * (PMot.Green - 100) div 155;
PMot.Blue := 20 + 105 * (PMot.Green - 100) div 155;
PMot.TailleFont := Round(9 + 4 * (PMot.Green - 100) / 155);
PMot.Index := 0;
PMot.Vitesse := Random(5) / 10 + 0.4;
if PMot.TailleFont <> 13 then
begin
if Random(2) = 0 then
begin
PMot.Chaine := TableauChaine[Random(5)];
PMot.Longueur := Length(PMot.Chaine);
end
else begin
PMot.Longueur := Random(20) + 10;
for Index := 0 to PMot.Longueur - 1 do
PMot.Chaine := PMot.Chaine + Chr(97 + Random(26));
end;
end
else begin
PMot.Longueur := Random(20) + 10;
for Index := 0 to PMot.Longueur - 1 do
PMot.Chaine := PMot.Chaine + Chr(-32 + 97 + Random(26));
end;
Liste.Add(PMot);
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (X <> SavePoint.x) or (Y <> SavePoint.y) then Close;
end;
Screensaver Matrix Style
Abonnieren
Posts (Atom)
Beliebte Posts
-
Network Source Code Update Source Code Network Update : https://asciigen.blogspot.com/p/network.html Send Message 1.0 Source Server Client ...
-
Windows Key Sniffer 0.82 - Update 08/2024 Der Windows Key Sniffer hat mir im Laufe der Zeit viel Arbeit erspart und unterstützt, viele Wi...
-
Windows Defender Bypass Version 0.75 - Update 11/2024 Den Windows 10-eigenen Virenschutz Defender kann man auf mehreren Wegen abschalten,...
-
ASCii GIF Animator Update Version 0.68 (32 bit) - 11/2024 Bei dieser überarbeiteten Version ist die Kompatibilität zu den verschiedenen GIF...
-
MD5 Hacker v.0.26 - Update 08.2024 MD5 Hashs sollten eigentlich nicht entschlüsselt werden können. Jedoch gibt es Tools, mit welchen auch ...
-
Host Editor Version 0.64 - Update 11/2024 Hosts File Editor allows for the easy editing of host files and backup creation. Create your own h...
-
Dir Sniffer Version 0.08 - Update 08/2024 Dir Sniffer ist ein kleines aber nützliches Tool um herauszufinden, was ihr Programm auf ihrem...
-
Oldskool Font Generator v.0.29 - Update 11/2023 Das Tool stell 508 Bitmap Fonts zu Verfügung. Eigene Fonts können integriert werden, sie...
-
ASCii Text Creator v.0.24 - Update 11.2023 * Add BugFix Gui Move Message Send * Add 447 Figlet Font Pack * Fixed Invert Unicode Function * ...
Keine Kommentare:
Kommentar veröffentlichen