БлогNot. "Код матрицы" на Паскале

"Код матрицы" на Паскале

Помните, в ставшем культовом фильме герои смотрят на экран, по которому бегут сверху вниз зелёные символы? Не думаю, что в будущем будут такие мониторы и такой способ визуализации... если уж говорить абстрактно, для визуализации вообще никаких "мониторов" не нужно, достаточно самого пространства.

Вторая посылка - на классическом Паскале тоже давно никто не пишет, хотя многие учатся. Так что давайте "мёртвым о мёртвом" сделаем небольшой "код матрицы" (было немного времени - третья посылка)...

uses crt;

procedure matrix;
const ESC=#27; UP=#72; DOWN=#80;
var
 i,j,c,sp:integer;
 pause:longint;
 scr:array [1..25,1..80] of char;
 Ch:char;
begin
 window (1,1,80,25);
 clrscr;
 directvideo:=true;
 textcolor (green);
 for i:=1 to 25 do for j:=1 to 80 do scr[i,j]:=#0;
 randomize;
 pause:=1000;
 repeat
  repeat
   c:=242+random(14);
   sp:=random(3);
   if sp=0 then c:=32;
   j:=2+random(79);
   for i:=24 downto 2 do begin
    scr[i,j]:=scr[i-1,j];
    gotoxy(j,i);
    write (scr[i-1,j]);
   end;
   gotoxy (j,1);
   scr[1,j]:=Chr(c);
   write (scr[1,j]);
   delay (pause);
  until keypressed;
  Ch:=ReadKey;
  case Ch of
   #0: begin
    Ch:=ReadKey;
    case Ch of
     UP:    if pause<MaxLongInt-100 then Inc(pause,100);
     DOWN:  if pause>100 then Dec (pause,100);
    end;
   end;
   ESC: Exit;
  end;
 until false;
 clrscr;
 textcolor(LightGray);
end;

begin
 clrscr;
 writeln (
  'MatriX! :-)'+#13+#10+
  #24+'   - slow/медленнее'+#13+#10+
  #25+'   - fast/быстрее'+#13+#10+
  'Esc - exit/выход'+#13+#10+
  'Press a key/Нажмите клавишу');
 reset (input);
 repeat until keypressed;
 matrix;
end.

При переносе этого файла в Турбо Паскаль нужно перекодировать его из Windows в DOS. Если не знаете, как это сделать, достаточно перебить русские символы в последних строках программы.

Очевидные изменения - необязательно использовать только символы с кодами 242 и выше (просто они в наборе ASCII-кодов самые "матричные"), необязательно вызывать криво работающую стандартную процедуру pause (взять код нормальной процедуры можно отсюда), легко найти и код для полного убирания курсора с экрана (я не стал его добавлять, чтоб обойтись только стандартным Паскалем).

Заставку на старте программы тоже можно не показывать. Получится примерно следующее (окно консоли здесь немного сжато по горизонтали, откуда полоса прокрутки).

Матрица
Матрица

 Отправлено на хранение

P.S. Если Вам просто нужно узнать, как работать с матрицами на Паскале - читайте эту главу моего учебника.

P.P.S. Если вам нужен простой screensaver (заставка) на тему "Матрицы", ниже прикреплён файл .scr в архиве .zip, в "семёрке" работает, есть настройки, доступно в этой версии не всё (в частности, нет звука и подключения текстового файла), но зато совсем маленький и работает :) - скрыл файл, Яндекс-браузер принимает его за вирус :)

17.04.2009, 15:25 [21114 просмотров]


теги: программирование графика pascal

показать комментарии (3)