Suche Home Einstellungen Anmelden Hilfe  

Zurück

Beispielprogramm in Turbo Pascal 6.0

program Lineare_zellulare_Automaten;
{Simulation von kuenstlichen Leben}
uses crt;
var  Kette,Kette_Neu : array[1..80] of boolean;
     Auswahl,Beenden : boolean;

procedure Anfangsbelegung;
var Wahl,j : byte;
    hilfe  : word;
begin
  WriteLn('Festlegen des Ausgangszustandes der Automaten');
  WriteLn('=============================================');
  WriteLn;
  WriteLn('1 - Belegung Tot-Lebend-Tot-Lebend...');
  WriteLn('2 - Belegung Lebend-Tot-Lebend-Tot...');
  WriteLn('3 - Zufällige Belegung');
  WriteLn('4 - Eigene Belegung');
  WriteLn;
  Write('Wahl = ');
  ReadLn(Wahl);
  if Wahl=1 then
     begin
       for j:=1 to 40 do Kette[2*j-1]:=false;
       for j:=1 to 40 do Kette[2*j]:=true;
     end;
  if Wahl=2 then
     begin
       for j:=1 to 40 do Kette[2*j-1]:=true;
       for j:=1 to 40 do Kette[2*j]:=false;
     end;
  if Wahl=3 then
     begin
       Randomize;
       for j:=1 to 80 do
         begin
           hilfe:=random(2);
           if hilfe=0 then Kette[j]:=false
                      else Kette[j]:=true;
         end;
     end;
  if Wahl=4 then
     begin
       ClrScr;
       WriteLn('Eingabe von 0 für Tot und 1 für Lebend');
       WriteLn;
       for j:=1 to 80 do
         begin
           Write('Automat[',j,'] = ');
           ReadLn(hilfe);
           if hilfe=0 then Kette[j]:=false
                      else Kette[j]:=true;
         end;
     end;
end;

procedure Ausgabe;
var i : byte;
begin
  for i:=1 to 80 do
    begin
      if Kette[i]=true then write('Û')
                       else write(' ');
    end;
end;

procedure Berechnung;
var i,j : byte;
begin
  ClrScr;
  WriteLn('Anzeigen und Beenden der Grafik mit ENTER');
  ReadLn;
  for i:=1 to 24 do
    begin
      Ausgabe;
      Kette_Neu[1]:=Kette[1];
      Kette_Neu[80]:=Kette[80];
      for j:=2 to 79 do
        begin
{Die folgenden Bedingungen stellen die Regeln für das
Leben der einzelnen Automaten dar. Natürlich können
diese verändert werden - viel Spaß beim Ausprobieren.}
          if (Kette[j-1]=false) and (Kette[j+1]=false)
             then Kette_Neu[j]:=Kette[j];
          if (Kette[j-1]=true) and (Kette[j+1]=false)
             then Kette_Neu[j]:=true;
          if (Kette[j-1]=false) and (Kette[j+1]=true)
             then Kette_Neu[j]:=true;
          if (Kette[j-1]=true) and (Kette[j+1]=true)
             then Kette_Neu[j]:=not(Kette[j]);
        end;
      for j:=1 to 80 do Kette[j]:=Kette_Neu[j];
    end;
  ReadLn;
end;

procedure Ende;
var Wahl : byte;
begin
  ClrScr;
  Beenden:=false;
  WriteLn('1 - Programmstart');
  WriteLn('2 - Beenden');
  WriteLn;
  Write('Auswahl = ');
  ReadLn(Wahl);
  if Wahl=2 then Beenden:=true;
  ClrScr;
end;

begin
  repeat
    ClrScr;
    Anfangsbelegung;
    Berechnung;
    Ende;
  until Beenden=true;
end.

Benutzer: gast • Besitzer: seminar • Zuletzt geändert am: