BloomCode & Artishok
BloomCode BloomCode
Привет, Артишок. Я тут подумала о том, чтобы соединить код и природу – например, создать сад, который генерируется и развивается в реальном времени. Может, попробуем поэкспериментировать с алгоритмами, которые будут создавать растения в абстрактной, яркой манере? Как тебе идея?
Artishok Artishok
Ох, сад, расцветающий на экране, дорогая! Представь, лианы, написанные как всплески неона, корни, переплетающиеся в случайных алгоритмах, листья, меняющие цвет в такт твоему сердцу — да! Пусть код станет кистью, растения – холстом, а хаос – музой. Добавь немного случайности, щепотку рекурсии – и смотри, как сад рисует себя сам. Закрасим мир данными и лепестками!
BloomCode BloomCode
Звучит как идеальное сочетание кода и природы – словно живой мазок кистью. Я представляю себе рекурсивную функцию, которая будет создавать ветви, а на каждой листике – цветовая палитра, меняющаяся в зависимости от движения мыши или звука. Может, добавим небольшой случайный фактор, чтобы каждый запуск был неповторимым. Давай набросаем алгоритм и посмотрим, как сад вырастет на экране.
Artishok Artishok
Конечно! Пусть код будет сердцем, мышка — дыханием, а звук — ветром. Каждое зерно — крошечная искра, раскрывающаяся буйством красок и форм. Готова посмотреть, как сад сам себя распишет? Давай кодировать!
BloomCode BloomCode
Готов запустить проект и дать волю росту. Давай активируем код и посмотрим, как расцветет наш сад.
Artishok Artishok
Прекрасно, холст – наше чистое поле. Пусть лозы прорастут, как мысли во время грозы, каждый лист – всплеск дикого цвета, каждая линия – тихая тайна. Включи систему, дай саду вздохнуть, и смотри, как он сам расцветает яркими красками. Да начнется буйство!
BloomCode BloomCode
Привет! Вот быстрый старт на p5.js – чувствуй себя свободно, как хочешь подкручивай: ```javascript let vines = []; function setup() { createCanvas(windowWidth, windowHeight); background(20); noStroke(); // seed a few initial vines for (let i = 0; i < 3; i++) { vines.push(new Vine(width/2 + random(-100,100), height)); } } function draw() { background(20, 20, 20, 10); // gentle fade for (let v of vines) { v.update(); v.display(); } } class Vine { constructor(x, y) { this.points = [{x: x, y: y}]; this.col = color(random(50,200), random(50,200), random(50,200), 150); } update() { // grow one new point each frame let last = this.points[this.points.length-1]; let angle = noise(last.x * 0.01, last.y * 0.01, frameCount * 0.02) * TWO_PI; let len = 5 + sin(frameCount * 0.1) * 3; let nx = last.x + cos(angle) * len; let ny = last.y + sin(angle) * len; this.points.push({x: nx, y: ny}); // keep length reasonable if (this.points.length > 200) this.points.shift(); } display() { stroke(this.col); strokeWeight(2); beginShape(); for (let p of this.points) vertex(p.x, p.y); endShape(); // add a leaf let p = this.points[this.points.length-1]; push(); translate(p.x, p.y); rotate(atan2(p.y - this.points[this.points.length-2].y, p.x - this.points[this.points.length-2].x)); fill(this.col); noStroke(); ellipse(0, 0, random(5,15), random(3,8)); pop(); } } function mousePressed() { vines.push(new Vine(mouseX, mouseY)); } function keyPressed() { if (key === 'c' || key === 'C') background(20); } ``` Запусти в редакторе p5 или в любом HTML файле с подключенным p5.js и наблюдай, как разворачивается сад, двигая мышью или нажимая клавиши. Приятного кодирования!