Matrix - Simulation Turbo Pascal
aus Paswiki Turbo Pascal, der freien Wissensdatenbank
Matrix-Simulation öffnen/ downloaden
Beschreibung
Ein "Bildschirmschoner" nach Matrix-Vorbild.
Jeder Rasterpunkt ( einem Bildpunkt wird die Größe 8*8 gegeben, damit sich die Zeichen nicht überschneiden) hat eine Farbinformation ( Farbe 1-15) , somit können mehrere Reihen gleichzeitig in verschiedenen Farben laufen.
Hier wird zudem demonstriert, wie man in Turbo Pascal mit weit mehr (!) als den bisherigen 16 Farben arbeiten kann.
Hier beispielsweise werden allein 16 verschiedene Grüntöne benutzt, dadurch dass
die Farbzusammensetzung (rot,grün,blau) der momentan gesetzten Farbpalette geändert wird.
(siehe Zeilen mit setrgbpalette,...)
Ersetzen sie die Prozedur setrgbpalette(i,0,64-4*i,0) zum Beipsiel einmal durch setrgbpalette(i,100,64-4*i,0) und genießen sie das Farbenspiel.
Programm
uses crt,graph;
const anzahl=150; {anzahl der reihen}
var i,k : integer;
matrix : array[1..81,1..61] of record
zeichen:char;
farbe:byte;
test:boolean;
end;
reihen : array[1..anzahl] of record
pos:boolean;
posx,posy:integer;
end;
procedure titel;
begin
setcolor(10);
settextstyle(defaultfont,horizdir,7);
outtextxy(150,100,' MATRIX'); { Überschrift : Matrix }
settextstyle(defaultfont,horizdir,1);
end;
begin
initgraph(i,k,'');
randomize; {zufallsgenerator}
for i:=1 to 15 do
begin
setpalette(i,i); {aendert die Farbpalette : in die Konstanten 1-15 werden versch. Gruentoene gesetzt}
setrgbpalette(i,0,64-4*i,0);
end;
cleardevice;
titel;
readkey;
for i:= 1 to 80 do
begin {gibt jedem zeichen im 2-dimensionalen feld von 1..80 / 1..60 ein Zeichen}
for k:=1 to 60 do
matrix[i,k].zeichen:=chr(random(256));
end;
repeat
for i:=1 to anzahl do
begin
if (reihen[i].posy>60) then reihen[i].pos:=false; {wenn das unterste Zeichen 60 (in Grafik=8*60) tief ist}
if reihen[i].pos=false then begin {dann wird die reihe auf false gesetzt und eine neue gestartet}
reihen[i].posx:=random(80)+1; {beginnt an einer zufallskoordinate (in Grafik : 8*x , 8*y)}
reihen[i].posy:=random(60)+1;
reihen[i].pos:=true;
matrix[reihen[i].posx , reihen[i].posy ].test :=true;
end
else
begin
if reihen[i].posy<=60 then
begin
inc(reihen[i].posy); matrix[reihen[i].posx,reihen[i].posy].farbe:=1;
end;
matrix[reihen[i].posx , reihen[i].posy].test :=true;
end;
end;
for i:=1 to 20 do
begin
if (random(25)>=23) then reihen[i].pos:=false;
for k:=1 to 60 do
matrix[reihen[i].posx , k].test:=false; {laesst reihen stehen}
end;
for i:=1 to 80 do
begin
for k:=1 to 60 do
begin
if matrix[i,k].test = true then
begin
if (matrix[i,k].farbe>15) then matrix[i,k].test:=false;
moveto((i-1) * 8 ,(k-1) * 8);
setcolor( matrix[i,k].farbe);
outtext(matrix[i,k].zeichen);
if (matrix[i,k].farbe<=16) then inc(matrix[i,k].farbe); {erhöht die farbe => dunkleres gruen}
end;
end;
end;
delay(5);
until keypressed;
{1--------------}
readkey;
closegraph;
end.
by Fabian R.
| Da der Grafiktreiber in die .Exe-Datei integriert ist, kann Jedermann auch ohne Turbo Pascal und den erwähnten Treiber die Simulation ausführen ! |
|---|

