Мой второй эффект на ZX-Spectrum, написанный на языке Бэйсик, был уже немного сложнее первого. Он рисовал линии в случайных местах экрана, с разными цветами и направлениями.
Хотя программа всё еще оставалась достаточно простой, результат выглядел более впечатляюще. Линии хаотично пересекались, создавая динамическую графику, напоминающую абстрактные рисунки.
Код выглядел так:
10 REM LINES
20 RANDOMIZE
30 BORDER 0: PAPER 0: INK 7: CLS
40 LET x1=INT (RND*255)
50 LET y1=INT (RND*175)
60 LET x2=INT (RND*255)
70 LET y2=INT (RND*175)
80 INK INT 1+(RND*7)
90 PLOT x1,y1: DRAW x2-x1,y2-y1
100 GO TO 40
Теперь немного о том, как это работает:
- Строка
20
RANDOMIZE
— инициализирует генератор случайных чисел, чтобы каждая линия была уникальной при новом запуске программы. - Строка
30
BORDER
,PAPER
,INK
,CLS
— устанавливают черный фон экрана (бумагу и рамку) и белый цвет текста по умолчанию, а затем очищают экран. - Строки
40-70
LET x1
,LET y1
,LET x2
,LET y2
— генерируют случайные координаты начала и конца линии. ПараметрыRND*255
иRND*175
ограничивают координаты, чтобы линии помещались в границы экрана ZX-Spectrum (256x192 точек) с учётом ограничений Бэйсика на высоту в 176 точек. - Строка
80
INK
— выбирает случайный цвет из 7 доступных (кроме черного). - Строка
90
PLOT
иDRAW
— рисуют линию на экране.PLOT
устанавливает начальную точку, аDRAW
рисует линию, определяя смещение по X и Y. - Строка
100
GO TO 40
— бесконечно повторяет процесс, добавляя новые линии на экран.
Этот эффект не просто рисовал линии, а создавал настоящий хаос цветов и форм. Конечно, из-за ограничений языка Бэйсик он выполнялся не очень быстро, но сам процесс разработки был невероятно увлекательным.
Результат этого эффекта выглядит странно и даже немного хаотично из-за особенностей графической системы ZX-Spectrum. На экране этого микрокомпьютера каждый блок размером 8x8 пикселей может иметь только один цвет текста и один цвет фона. Это ограничение, известное как клэшинг атрибутов, становится особенно заметным, когда линии пересекаются или накладываются друг на друга.
Всё дело в том, что каждая линия, проходя через блок, задаёт свой цвет для этого участка. Если одна линия пересекает другую, цвет в блоке меняется на последний нарисованный. Это приводит к тому, что предыдущая линия словно теряет свой цвет или перекрывается, даже если её часть ещё видна. В результате создаётся визуальный хаос: одни участки будто “размыты”, а другие неожиданно резко меняют цвет. Это не ошибка, а уникальная черта графики ZX-Spectrum, которая добавляет особый характер эффекту, но при этом делает его одновременно немного неуклюжим.
Эти странные цветовые конфликты, наложенные на случайный порядок линий, превращают экран в динамическое полотно, где каждая новая линия переписывает правила игры. Для меня, тогда еще только начинающего понимать внутреннюю магию компьютеров, это казалось чем-то живым, пусть и неуправляемым. Именно эта непредсказуемость и придала эффекту свою особую атмосферу, которая остаётся для меня незабываемой.