| Программный код. Использование переменных
Переменные сохраняют свое значение в памяти и поэтому могут быть использованы в программе неоднократно. Переменная может использоваться в одной программе много раз и изменять свое значение во время выполнения программы.
Главная причина для использования переменных - избежать повторения фрагментов кода.
Если вы вводите одно и то же число более одного раза, рассмотрите возможность применения переменной вместо него; это сделает код более наглядным и удобным для внесения изменений.
Повторное использование значений
Если вы создадите переменные для хранения y-координаты и диаметра для кругов из следующего примера, то для параметров функции эллипса будет использована одна и та же величина:
 |
size(480, 120);
smooth();
int y = 60;
int d = 80;
ellipse(75, y, d, d); // Левый
ellipse(175, y, d, d); // Центральный
ellipse(275, y, d, d); // Правый
|
 |
Изменяем значение переменной
Простое изменение переменных y и d видоизменяет все три эллипса:
size(480, 120);
smooth();
int y = 100;
int d = 130;
ellipse(75, y, d, d); // Левый
ellipse(175, y, d, d); // Центральный
ellipse(275, y, d, d); // Правый
|
Учимся перемещать объекты на экране, пользоваться командой random для генерирования случайных чисел.
Напишем код проекта.
- Объявим наши переменные в коде программы:
 |
int x=500;//объявление переменной х, присваивание значения
int y=300; //объявление переменной у, присваивание значения
//содержимое системной функции setup() выполняется один раз
void setup() {
size(1000,600); //установка размера окна
}
//содержимое функции draw() выполняется до тех пор, пока мы не остановим программу
void draw() {
ellipse(x,y,100,100); // выполняется прорисовка эллипса
}
|
Системная функция void setup().
Рекомендуется писать ее первой. Функция setup() вызывается один раз при запуске скетча.
Эта функция используется для установки размера окна скетча, присвоения значений некоторым переменным, загрузки изображений и т.д
Системная функция void draw().
Эта функция является основой для построения любой анимации.
Её особенностью является то, что она автоматически вызывается при каждом обновлении фреймбуфера. Функция draw() работает непрерывно, с частотой 60 кадров с секунду.
2. Теперь допишем команду х = х +1; и посмотрим что у нас произойдет:
 |
void setup(){
size(1000,600); //установка размера окна
frameRate(4); // задаем скорость смены кадров - 4-е кадра в секунду
}
void draw(){
x = x +1; // от кадра к кадру значение переменной х увеличивается на единицу: 501, 502, 503 ....
// выполняется прорисовка эллипса, меняющего свое положение относительно оси ОХ
ellipse(x,y,100,100);
//выполняем визуализацию значения переменной х от кадра к кадру
println("x = ", x);
}
|
Вывод :
- Эллипс начал смещаться вправо по оси Х.
- Так как центр эллипса задается переменными x и y, а переменную х мы увеличиваем на единицу каждый цикл
3. Зададим фон - команда background(0); Цвет –любой, допустим - background(24,114,91);
 |
void draw(){
background(24,114,91);/* в очередном кадре выполняется перерисовка фона окна в данном случае служит закраской предыдущего рисунка*/
x = x +1; // от кадра к кадру значение переменной х увеличивается на единицу
// выполняется прорисовка эллипса, меняющего свое положение относительно оси ОХ
ellipse(x,y,100,100);
}
|
Вывод.
background(24,114,91);
- задает цвет фона,
- в данном случае служит закраской предыдущего рисунка, так как каждый цикл последовательно выполнялись команды:

Таким образом каждый цикл обновляется фон и предыдущий рисунок как бы невидим. На самом деле он есть, но уже за фоном
4. Добавим смещение по у: y = y + 1; Смещение пошло по диагонали.
 |
void draw(){
background(24,114,91);/* в очередном кадре выполняется перерисовка фона окна в данном случае служит закраской предыдущего рисунка*/
x = x +1; // от кадра к кадру значение переменной х увеличивается на единицу
y = y + 1; //Смещение пошло по диагонали
выполняется прорисовка эллипса, меняющего свое положение относительно оси ОХ и ОУ
ellipse(x,y,100,100);
}
|
5. Уберем смещение х.
- Движение эллипса - по вертикали – вниз.
- Если поменяем знак – смещение будет в другую сторону

Изучим команду для генерации случайных чисел - random().
Случайные числа
В отличие от плавного, линейного движения, характерного для компьютерной графики, движение в реальном мире может быть любым.
Представьте лист, падающий на землю, или муравья, ползущего по неровной дороге. Мы можем изобразить такие сложные, непредсказуемые траектории на компьютере с помощью генерации случайных чисел.
Генерацию случайных чисел выполняет функция random(), от пользователя требуется всего лишь задать диапазон генерируемых чисел.
- Функция random() всегда возвращает числа типа float.
В скобках указывается диапазон значений который будет выбираться случайным образом.
- Создадим несколько переменных (x и y уже присутствуют в программе) : float t; float z; float p;
- Учтем, что максимальное значение х = 1000, у = 600 и зададим значение аргументу функции random() для х и у : random(1000) и random(600)
3. Для команды random нужна переменная float : float random;
6. Изменим тип переменных х, у и уберем первоначальные значения: float х; float у;
float random;//объявление переменных
float x;
float y;
float p;
float t;
float z;
void setup(){
size(1000,600); //установка размера окна
frameRate(4); // задаем скорость смены кадров - 4-е кадра в секунду
}
void draw(){
background(24,114,91) ;/* в очередном кадре выполняется перерисовка фона окна в данном случае служит закраской предыдущего рисунка*/
x = random(1000); // случайное значение для х
y = random(600); //случайное значение для у
ellipse(x,y,100,100);
}
Вывод: движение эллипса – хаотично. У нас появляются эллипсы, причем везде – по всей области экрана.
|
7. Уберем фон из функции draw() а наши эллипсы закрасим – функция fill(t, z, p);
 |
float random;//объявление переменных
float x;
float y;
float p;
float t;
float z;
void setup(){
size(1000,600); //установка размера окна
background(24,114,91);//цвет фона окна
frameRate(4); // задаем скорость смены кадров - 4-е кадра в секунду
}
void draw(){
x = random(1000); // случайное значение для х
y = random(600); //случайное значение для у
fill(t,z,p);// заливка фигуры
ellipse(x,y,100,100);
}
|
8. Внесем изменения:

|
float random;//объявление переменных
float x;
float y;
float p;
float t;
float z;
void setup(){
size(500,300); //установка размера окна
background(24,114,91);//цвет фона окна
frameRate(4); // задаем скорость смены кадров - 4-е кадра в секунду
}
void draw(){
x = random(500); // случайное значение для х
y = random(300); //случайное значение для у
t = random(255); //случайное значение для t
z = random(255); //случайное значение для z
p = random(255); //случайное значение для p
fill(t,z,p);// заливка фигуры
ellipse(x,y,50,50);
}
|
Или
Внесем изменения в команду fill: fill(random(255), random(255), random(255));
|
PS!!!
Чтобы использовать одну и ту же последовательность случайных чисел при каждом запуске программы, существует функция randomSeed().
| |