Как сделать скринсейвер в стиле к/ф "Матрица" с помощью (внимание!) Турбо Паскаля

Как сделать скринсейвер в стиле к/ф "Матрица" с помощью (внимание!) Турбо Паскаля

Скринсейвер в стиле к/ф “Матрица” можно просто скачать из интернета. Но если хочется сделать его своими так сказать руками, да еще и необычным методом…

Инструкция

Уровень сложности: Несложно

1 шаг

Скачайте и установите себе программу Turbo Pascal (если её у вас нет)

2 шаг

Откройте окно программы (файл turbo.exe в каталоге bin)

3 шаг

В основное поле программы введите следующий алгоритм

program matrix;
uses crt;
var x, y, z : real;
begin
clrscr;
textcolor(lightgreen);
y:=1;
z:=x;
while z<2000 do
begin
y:=y+2;
x:=sqr(y);
x:=1/x;
z:=z+x;
write(z);
end;
readln;
end.

4 шаг

Если не хотите перепечатывать вышеизложенный алгоритм (в среду Turbo Pascal нельзя скопировать текст извне) можно поступить так: открываете “Блокнот”, копируете туда алгоритм, сохраняете под любым именем. Затем заходим в свойства этого файла и меняем расширение файла с .txt на .pas. Теперь откройте этот файл, и на запрос выбора программы укажите путь к файлу turbo.exe.

5 шаг

Если окно программы открыто не во весь экран нажмите Alt+Enter

6 шаг

Теперь в окне программы нажмите на пункт меню Run и выберете пункт Run. Либо нажмите Ctrl+F9

7 шаг

Наслаждайтесь картиной пока не надоест.

8 шаг

Что бы отключить скринсейвер нажмите Alt+Enter и закройте окно. Либо нажмите Alt+Tab (это свернет программу)

9 шаг

Обратите внимание – в папке где был текстовый файл с алгоритмом (тот что с расширением .pas) появится еще один файл с расширением .exe
Этот файл запускает исполнение программы без открытия самой среды Turbo Pascal

10 шаг

Примечание: к сожалению вам будет казаться что зеленые цифры бегут не сверху вниз, а справа налево (или наоборот). решается все очень просто – переверните монитор (или голову) на 90 градусов =)

Обсуждение

659_micro
Рейтинг
  1. +
  2. 2
Daiver (00:36 29.07.2009)

А че – прикольно, давно уже паскаль не использовал
Ностальгия….

990_micro
Рейтинг
  1. +
  2. 2
IcooFT (01:40 29.07.2009)

Паскаль – творит чудеса!

Avatar_micro
Рейтинг
  1. +
  2. 2
Poast (19:14 29.07.2009)

а если сменить расширение экзешника на *.scr – то получиться полноценный скринсейвер….

470_micro
Рейтинг
  1. +
  2. 2
Steam (00:00 05.08.2009)

как меняеца с txt на pas? в свойствах этого нету. напишите поподробнее плз

717_micro
Рейтинг
  1. +
  2. 2
Vir (07:34 06.08.2009)

в проводнике “Сервис→Свойства папки→Вид”, большое поле с галочками прокручиваешь в самый низ, там почти в самом низу галочка “Скрывать расширения для зарегистрированных типов файлов”. Сними ее, и нажми “ОК”. Теперь ты будешь видеть типы всех файлов, но будь аккуратнее, переименовывая файлы – если вместо “picture.jpg” введешь “картинка”, то этот файл уже не будет считаться изображением. правильно будет переименовать в “картинка.jpg”. короче, не меняй всё, что после последней точки, и саму точку тоже.

817_micro
Рейтинг
  1. +
  2. 2
Japha (14:26 22.08.2009)

Vir, спасибо что ответили человеку, меня в городе не было…

605_micro
Рейтинг
  1. +
  2. 1
ResursStalUG (14:44 12.09.2009)

097_micro
Рейтинг
  1. +
  2. 2
b1ase (20:29 19.12.2009)

Попробовал сделать, интересно получилось (:

064_micro
Рейтинг
  1. +
  2. 2
Smoke (23:08 24.12.2009)

НиШтЯк

Avatar_micro
Рейтинг
  1. +
  2. 1
Smileden1 (03:02 31.12.2009)

Интересная фишка) но как новичек(юзер)не могу не спросить :каким образом мы добиваемся такого эфекта?
Путаем систему переменными или как?Просветите и поподробнее пожалуста если можно)))

817_micro
Рейтинг
  1. +
  2. 2
Japha (08:39 02.01.2010)

Smileden1, да ничего сверх оригинального тут на самом деле нет. Просто примерно 3 года назад я писал домашнее задание по информатике, уже и не помню, что должна была делать программа, вроде анализировать какую то математическую или геометрическую прогрессию и в конечном счете выводить её n-ый элемент, где n задавалось пользователем с клавиатуры. Когда дело было сделано, я решил побаловаться и изменил программу таким образом, что бы переменной z в конечном итоге присваивалось какое то дробное число не превышающее 2000. Таким образом программа постоянно выполняет цикл преобразований переменной z и выводит результат на экран. Я честно говоря даже не знаю бесконечный ли это цикл, так как возможно на каком то этапе переменной будет присвоено значение, большее чем две тысячи.
Осталось только изменить цвет шрифта на зеленый и выводить каждое значение сразу после предыдущего, таким образом получается непрерывно бегущая лента из примерно таких символов: 2.33700176938783Е-0001
Кстати говоря, аналогичного результата можно было бы добиться и наименьшим количеством строчек кода, и количеством переменных, просто я менял уже готовую программу, при этом я лишь удалил пару строчек и добавил одну-две новых.

P.S. Если вас очень сильно интересует, могу расшифровать каждую строчку кода поэтапно.

817_micro
Рейтинг
  1. +
  2. 3
Japha (08:46 02.01.2010)

Кстати вот могу предоставить немного модифицированный код этой же самой программы.
Программа имитирует вывод надписи на экран, затем вы должны нажать клавишу Enter, после чего вы увидите сринсейвер, о котором говорилось выше.

program first;
uses crt;
var x, y, z : real;
begin
clrscr;
textcolor(lightgreen);
y:=1;
z:=x;
write(‘W’); delay(65500);
write(‘a’); delay(65500);
write(‘k’); delay(65500);
write(‘e’); delay(65500);
write(’ ‘); delay(65500);
write(’u’); delay(65500);
write(‘p’); delay(65500);
write(’ ‘); delay(65500);
write(’N’); delay(65500);
write(‘e’); delay(65500);
write(‘o’); delay(65500);
write(‘.’); delay(65500);
write(‘.’); delay(65500);
write(‘.’); delay(65500);
delay(65500);
delay(65500);
delay(65500);
clrscr;
write(‘T’); delay(65500);
write(‘h’); delay(65500);
write(‘e’); delay(65500);
write(’ ‘); delay(65500);
write(’m’); delay(65500);
write(‘a’); delay(65500);
write(‘t’); delay(65500);
write(‘r’); delay(65500);
write(‘i’); delay(65500);
write(‘x’); delay(65500);
write(’ ‘); delay(65500);
write(’h’); delay(65500);
write(‘a’); delay(65500);
write(‘s’); delay(65500);
write(’ ‘); delay(65500);
write(’y’); delay(65500);
write(‘o’); delay(65500);
write(‘u’); delay(65500);
write(‘.’); delay(65500);
write(‘.’); delay(65500);
write(‘.’); delay(65500);
readln;
while z<2000 do
begin
y:=y+2;
x:=sqr(y);
x:=1/x;
z:=z+x;
write(z);
end;
readln;
end.

Знаю, знаю не много смахивает на индусский код)))

Avatar_micro
Рейтинг
  1. +
  2. 1
Smileden1 (03:22 03.01.2010)

Japha
"Таким образом программа постоянно выполняет цикл преобразований переменной z… "почему она это делает?
и если можно то было бы удобно если бы :
“P.S. Если вас очень сильно интересует, могу расшифровать каждую строчку кода поэтапно.”
Уж очень нужно…через неделю экзамен по Паскалю и было бы класно удивить препода,так -как на протяжении полугода знаниями не блестал((
Програмка канешно очень заинтересовала прост БОМБА)

Avatar_micro
Рейтинг
  1. +
  2. 1
Smileden1 (03:28 03.01.2010)

Попробывал ваш типа МОД,то не получилось((
Error 5: Syntax error
и ещо вопросик почему первая прога не выполняется в АВС ?? а только в турбо??

817_micro
Рейтинг
  1. +
  2. 2
Japha (03:38 04.01.2010)

>"Таким образом программа постоянно выполняет цикл преобразований переменной z… "почему она это делает?
Ну потому что код
" while z<2000 do
begin
(…)
end."
является алгоритмом цикла с предусловием в языке Паскаля, а постоянно он выполняется потому что переменная z в конечном итоге постоянно принимает значение меньше чем 2000.

>Попробывал ваш типа МОД,то не получилось((
Error 5: Syntax error

Тут видимо что то с кодировками, потому что если пользоваться блокнотом, в строчках write(‘…’); delay(65500); изменяется синтаксис в (‘…’), ковычки меняются на символы С и Т.
Перепечатывайте, если так нужно, я честно говоря не знаю что тут можно сделать

>почему первая прога не выполняется в АВС ?? а только в турбо?? Честно говоря не пользовался АВС, не знаю, думаю что все дело в том что это немного разные языки.

817_micro
Рейтинг
  1. +
  2. 3
Japha (04:15 04.01.2010)

program matrix;
{Ключевое слово “program” дальше имя программы }
uses crt;
{Подключение дополнительного модуля CRT. Этот модуль не входит в стандарт языка, он является расширением возможностей паскаля для IBM-совместимых ЭВМ. Этот модуль содержит набор процедур, которые позволяют задавать цвет символов, очищать экран, устанавливать курсор в любую позицию экрана и выполнять множество других полезных действий }
var x, y, z : real;
{ Раздел описания переменных. Он всегда начинается со слова “var” (от variable – переменная), далее через запятую перечисляем имена переменных которые мы будем использовать в программе, потом через двоеточие указываем тип данных переменных, “real” – значит переменные принимают нецелые (дробные) значения.}
begin
{Начало тела основной программы}
clrscr;
{процедура очищающая экран, доступна после подключения модуля CRT}
textcolor(lightgreen);
{Установка цвета шрифта, в данном случае “green” – зеленый, а приставка “light” делает его ярко зеленым. Также доступна только после подключения модуля CRT }
y:=1;
{Присваиваем переменной у значение 1 (на деле ей присваивается значение 1,0000…0, так как тип данных – "real"}
z:=x;
{Присваиваем переменной z значение переменной х }
while z<2000 do
{процедура цикла, пока переменная z принимает значение меньше чем 2000 повторять алгоритм, записанный между “begin” и “end” }
begin
{Начало тела цикла}
y:=y+2;
{Присваиваем переменной у значение переменной у плюс 2 }
x:=sqr(y);
{Присваиваем переменной х значение переменной у в квадрате (тоесть у умножить на у)}
x:=1/x;
{Присваиваем переменной х значение 1 делить на значение переменной х}
z:=z+x;
{Присваиваем переменной z значение переменной z + значение переменной х}
write(z);
{Вывод значения переменной z на экран}
end;
{Конец тела цикла}
readln;
{"пустая" процедура “readln” останавливает закрытие программы после выполнения алгоритма который выше, до тех пор пока не будет нажат enter. В данном случае это процедура не нужна так как алгоритм который выше повторяется бесконечно}
end.
{Конец тела основной программы}

Avatar_micro
Рейтинг
  1. +
  2. 1
Smileden1 (00:33 05.01.2010)

Спасибо Japha
В итоге я понял суть и оказалсь всё проще чем я думал)
Огромное спасибо за труд!!!!
если хочеш напишы мне вот :
ICQ – 584263578
Skype – deniel314 (я чаще здесь)
ну или http://vkontakte.ru/id28032969

947_micro
Рейтинг
  1. +
  2. 4
Vikeltor (11:05 05.04.2010)

Можно было просто в цикле выводить случайно выбранные символы.
В матрице все же не только цифры бегут.

015_micro
Рейтинг
  1. +
  2. 2
TEXX (18:03 22.04.2010)

Круто у меня получилось

817_micro
Рейтинг
  1. +
  2. 2
Japha (20:22 24.04.2010)

Vikeltor, да, я и сам уже это сказал где то выше, что можно было б поменьше написать и получше, все дело в том что я модифицировал одну из своих прог которая должна была что то там подсчитывать. с нуля переписывать как то лень да и паскаль я уже не так хорошо помню.

225_micro
Рейтинг
  1. +
  2. 1
ta2 (02:18 02.05.2010)

афигенна :) спс

008_micro
Рейтинг
  1. +
  2. 1
Sirse (20:58 14.05.2010)

Эх, это бы на мою руби

Avatar_micro
Рейтинг
  1. +
  2. 1
N1GS (02:50 13.06.2010)

прикольно,но не проще через write ???

Avatar_micro
Рейтинг
  1. +
  2. -1
blowfish (00:46 23.08.2010)
Комментарий скрыт. Показать
617_micro
Рейтинг
  1. +
  2. 1
Tander (21:49 27.09.2010)

Коменты чуть ли не круче чем сама статья)

385_micro
Рейтинг
  1. +
  2. 0
K_Shimov (22:12 19.10.2010)

Отличная статья!
Мне очень понравилась.

888_micro
Рейтинг
  1. +
  2. 1
qBic (19:18 19.11.2010)

Мне кажется, что после write(z) стоит вставить строку
if keypressed then halt; Т.е. цикл выглядит так:
while z<2000 do
begin
y:=y+2;
x:=sqr(y);
x:=1/x;
z:=z+x;
write(z);
if keypressed then halt;
end;
Может быть, я просто уже забыл паскаль, но без этого нормального прерывания программы у меня не получается.

Avatar_micro
Рейтинг
  1. +
  2. 0
Union (20:56 20.12.2010)

Ребят,помогите пожалуйста написать программу,на мой взгляд опытному программисту написать её плевое дело.
Вот сама задача:
С экрана вводится натуральное число.Определить какая цифра встречается в нем чаще, минимальная или максимальная.Вывести на экран значения этих цифр и их кол-ва.Не использовать массивы.
Выручите плз,очень надо.

Avatar_micro
Рейтинг
  1. +
  2. 1
SanekZ (00:24 29.05.2011)

program matrix;
uses crt;
var a,b,c1,d,chastota,visota,shirina:integer;
ar:array[1..30] of string;
o:char;
begin

chastota:=100;
visota:=28;
shirina:=70;

o:=‘+’;
while (o<>’e’) do begin
clrscr;
randomize;
o:=‘+’;
for a:=1 to visota do
for b:=1 to shirina do ar[a][b]:=’ ‘;
while (o<>’r’) and (o<>’e’) do begin
clrscr;
for a:=1 to 1 do begin
b:=random(visota);
c1:=random(shirina);
d:=random(60)60;
ar[b][c1]:=chr(d);
end;
for a:=1 to 3 do begin
b:=random(visota);
c1:=random(shirina);
while (ar[b][c1] <> ’ ‘) or (ar[b-1][c1]=’ ’) do begin
b:=random(visota);
c1:=random(shirina);
end;
d:=random(60)
60;
ar[b][c1]:=chr(d);
end;
for a:=1 to 40 do begin
b:=random(visota);
c1:=random(shirina);
ar[b][c1]:=’ ‘;
end;
textcolor(lightgreen);
for a:=1 to visota do begin
for b:=1 to shirina do
write(ar[a][b]);
writeln(’’);
end;
If keypressed then o:=readkey;
delay(chastota);
end;
end;
end.

Меняя параметры частота, высота, ширина можно подогнать её под свой компьютер.

r – “перезагрузить” матрицу,
e – выйти.

Ваш комментарий

Запросить инструкцию

Не нашли нужную пошаговую инструкцию?
Возможно, что кто-то из посетителей сайта сможет помочь. Оставьте запрос прямо сейчас, если Вы уверены, что эта тема ещё не освещена на нашем проекте!

Рейтинг
  1. +
  2. 8
29
9597