"Код матрицы" на Паскале
Помните, в ставшем культовом фильме герои смотрят на экран, по которому бегут сверху вниз зелёные символы? Не думаю, что в будущем будут такие мониторы и такой способ визуализации... если уж говорить абстрактно, для визуализации вообще никаких "мониторов" не нужно, достаточно самого пространства.
Вторая посылка - на классическом Паскале тоже давно никто не пишет, хотя многие учатся. Так что давайте "мёртвым о мёртвом" сделаем небольшой "код матрицы" (было немного времени - третья посылка)...
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 [21280 просмотров]