Творческое программирование в обработке | Набор 1 (Случайный ходун)

Опубликовано: 14 Июля, 2021

Креативное программирование - это тип подхода к программированию, цель которого - создать что-то выразительное и визуальное, а не чисто функциональное. Такой подход к программированию используется для создания живых произведений искусства, графического моделирования и визуализации алгоритмов. Существует ряд инструментов и библиотек для творческого или визуального программирования, из которых Processing наиболее широко используется. Processing - это язык программирования с открытым исходным кодом и IDE, созданный для целей визуального программирования. Обработка доступна для бесплатного скачивания здесь. Он также доступен как диалект Python (processing.py) и фреймворк javascript (p5.js). В этой статье мы создадим простую программу случайного блуждания, которая представляет собой просто шарик, беспорядочно перемещающийся по холсту.

Каждый эскиз обработки обычно состоит из двух функций:

  • setup() - вызывается один раз в начале и обычно используется для целей инициализации.
  • draw() - по умолчанию вызывается 30 раз в секунду, при этом частота кадров анимации по умолчанию составляет 30 кадров в секунду.

Выполнение эскиза
Примеры кодов были написаны на java с использованием библиотеки обработки и среды IDE обработки.




Walker w; // Walker object
void setup() // Called at the beginning once
{
size( 640 , 360 ); // Declaring size of the output window
w = new Walker(); // Initializing the new walker object
}
void draw() // Called every frame
{
background( 255 ); // Setting a white background
w.display(); // Displaying the walker object
}

Реализация класса Walker-




class Walker // The walker class
{
PVector location; // A vector object representing the location
Walker() // Constructor to initialize the data member.
{
// Initial location of the walker object is
// set to the middle of the output window.
location = new PVector(width / 2 , height / 2 );
}
void display() // Function to display the walker object
{
// Drawing a black circle of radius 10 at location
fill( 0 );
ellipse(location.x, location.y, 10 , 10 );
}
}

На этом этапе, если мы запустим скетч, он просто отобразит шар, который находится в центре экрана вывода.
Walker , мы добавим функцию walk() к классу Walker и вызовем ее внутри функции draw() в скетче. Мы также добавим checkEdges() функцию Walker , чтобы предотвратить Walker объект двигаться из экрана. Мы также должны изменить эскиз, чтобы включить новые функции, которые мы добавляем в класс Walker Мы также можем сделать еще одно: переместить функцию background() setup() . Таким образом, фон не будет обновляться каждый раз, и мы сможем видеть след, оставленный объектом Walker.

Измененная реализация эскиза




// Program to implement random walker
Walker w; // Walker object
void setup() // Called at the beginning once
{
size(640, 360); // Declaring size of the output window
background(255); // Setting a white background
w = new Walker(); // Initializing the new walker object
}
void draw() // Called every frame
{
w.walk(); // Walking the Walker object
w.checkEdges(); // Checking for edges of the output screen.
w.display(); // Displaying the walker object
}

Модифицированная реализация класса Walker-




class Walker // The walker class
{
PVector location; // A vector object representing the location
Walker() // Constructor to initialize the data member.
{
// Initial location of the walker object is
// set to the middle of the output window.
location = new PVector(width / 2, height / 2);
}
void walk()
{
// The x and y values of the location
// vector are incremented by a random value
// between -5 and 5
location.x += random(-5, 5);
location.y += random(-5, 5);
}
// Function to prevent the Walker to move out of the screen
void checkEdges()
{
if (location.x < 0)
location.x = 0;
else if (location.x > width)
location.x = width;
if (location.y < 0)
location.y = 0;
else if (location.y > height)
location.y = height;
}
void display() // Function to display the walker object
{
// Drawing a black circle of radius 10 at location
fill(0);
ellipse(location.x, location.y, 10, 10);
}
}

Автор статьи: Сумик Ракшит . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.