Doeasy & Perebor
Perebor Perebor
Привет, знаешь, я тут подумал, как простые алгоритмы могут создавать удивительно красивые узоры – как будто из нескольких строк кода получается абстрактное искусство. Хочешь пошарим вместе и посмотрим, что у нас получится?
Doeasy Doeasy
Звучит как нечто интересное и расслабленное. Давай позволим нескольким прогонам создать что-то для нас. Что тебе ближе: глитч-сетки, шум или, может, яркий всплеск цвета? Просто набросай идею, и посмотрим, что из этого выйдет.
Perebor Perebor
Слушай, забей на это: for (int i=0; i<width; i++) for (int j=0; j<height; j++) cout << (rand()%2? '#': ' ');
Doeasy Doeasy
Отличная маленькая пиксельная заготовка! Как будто случайный лоскутный ковер из чёрных и белых точек. Если хочешь добавить динамики, попробуй изменить символ на ‘*’ или ‘.’, или подкрути rand() % 3 для третьего оттенка. Можно ещё добавить неспешный внешний цикл, который будет сдвигать узор каждый кадр – получится живая, "дышащая" графика. Или поиграй с синусоидой, чтобы по-разному раскрашивать ряды. Не зацикливайся, экспериментируй и дай узору развиваться самому.
Perebor Perebor
Конечно, вот небольшая модификация, чтобы узор ожил: for (int t=0; t<100; ++t) { for (int i=0; i<height; ++i) { for (int j=0; j<width; ++j) { int val = (rand() % 3) + (int)(5*sin(i/10.0 + t/5.0)); if (val % 3 == 0) cout << '*'; else if (val % 3 == 1) cout << '.'; else cout << ' '; } cout << '\n'; } usleep(20000); system("clear"); } Просто замени `rand() % 3` этим выражением, и увидишь, как ряды будут пульсировать.
Doeasy Doeasy
Просто небольшая подстройка, чтобы сетка ожила, почувствуй ритм синусоиды и немного случайности в каждом кадре. ``` for (int t=0; t<100; ++t) { for (int i=0; i<height; ++i) { for (int j=0; j<width; ++j) { int val = (rand() % 3) + (int)(5*sin(i/10.0 + t/5.0)); if (val % 3 == 0) cout << '*'; else if (val % 3 == 1) cout << '.'; else cout << ' '; } cout << '\n'; } usleep(20000); system("clear"); } ```
Perebor Perebor
Замени случайную часть на детерминированный паттерн, чтобы ты мог четко видеть ритм: ``` for (int t=0; t<200; ++t) { for (int i=0; i<height; ++i) { for (int j=0; j<width; ++j) { int val = (int)(5*sin(i/10.0 + t/5.0)) + (j%3); if (val % 3 == 0) cout << '*'; else if (val % 3 == 1) cout << '.'; else cout << ' '; } cout << '\n'; } usleep(20000); system("clear"); } ```
Doeasy Doeasy
Смена ритма получилась отличная – теперь каждая линия как маленькая песня из синусов и четкий трехдольный ритм. Наблюдать за этим пульсом как-то ближе к картине, чем к программе, да? Просто чуть-чуть подкрути 5 или делитель на t, и откроется совсем новая тема. Поиграй, дай волнам подсказать движения кисти.
Perebor Perebor
Ну, теперь это как картина с метрономом. Попробуй увеличить 5 до 10 – будет более чёткий ритм, или раздели t на 10 – получится более плавное замедление. Каждая мелочь меняет всё. Продолжай экспериментировать и дай синусоиде вести за собой.
Doeasy Doeasy
Ну вот, чувствуешь ритм синусоиды – смотри, как полотно меняется. Попробуй большую амплитуду, или волну другую – косинус, даже пилу, если хочешь более отрывистый эффект. Не напрягайся, дай узору дышать, и посмотри, какие новые оттенки выплывут. Удачи в творчестве!