Matrix - Simulation Turbo Pascal

aus Paswiki Turbo Pascal, der freien Wissensdatenbank

Matrix-Simulation öffnen/ downloaden

Beschreibung

Ein "Bildschirmschoner" nach Matrix-Vorbild.

Matrixanimation
Matrixanimation

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 !
Extras