Это мой самый первый эффект, созданный еще в начале 90-х на клоне микрокомпьютера ZX-Spectrum под названием “Ленинград-1”. Программа была написана на языке Бэйсик.
Конечно, из-за ограничений системы и клэшинга атрибутов эффект выглядел не так впечатляюще, как хотелось бы, но на тот момент для меня это было настоящим достижением. Ниже текст программы на языке BASIC компьютера ZX-Spectrum:
1 BORDER 0
2 PAPER 0
3 CLS
10 RANDOMIZE
20 INK 1+INT (RND*7)
30 PLOT INT (RND*256), INT (RND*176)
40 GOTO 20
Мне кажется, описывать алгоритм излишне, но всё же попробую.
- Команда
BORDER 0
устанавливает цвет рамки экрана в чёрный. - Команда
PAPER 0
задаёт цвет фона (бумаги) также чёрным. - Команда
CLS
очищает экран, заполняя его цветом, заданным вPAPER
. - В строке 10 командой
RANDOMIZE
инициализируется генератор случайных чисел.
Далее начинается бесконечный цикл:
- В строке 20 случайным образом выбирается цвет пера (
INK
) от 1 до 7. - В строке 30 на случайных координатах
INT(RND*256)
(по горизонтали) иINT(RND*176)
(по вертикали) рисуется точка с помощью командыPLOT
. - В строке 40 команда
GOTO 20
заставляет программу вернуться к началу цикла, создавая бесконечный процесс случайной генерации точек на экране.
Эффект — экран заполняется точками разных цветов в случайных местах, создавая “шумовую” визуализацию.
Однако со временем можно заметить, что точки выстраиваются в линии. Это связано с особенностями генератора случайных чисел ZX Spectrum, который использует линейный конгруэнтный алгоритм. Такой подход, хотя и эффективен для своего времени, порой создаёт видимые закономерности, особенно если числа проецируются на экран через простые операции, такие как взятие остатка. Ограниченный диапазон чисел и повторяемость последовательности при одинаковом начальном значении также усиливают этот эффект.