Творческое программирование в обработке | Набор 1 (Случайный ходун)
Креативное программирование - это тип подхода к программированию, цель которого - создать что-то выразительное и визуальное, а не чисто функциональное. Такой подход к программированию используется для создания живых произведений искусства, графического моделирования и визуализации алгоритмов. Существует ряд инструментов и библиотек для творческого или визуального программирования, из которых 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, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.