float t; // объявляем переменную void setup () {
background (20);
size (500,500);
frameRate (40);
}
void draw () {
stroke (255); // задаем цвет точки strokeWeight (5); // задаем размер точки точки
/ * переносим начало системы координат в точку с координатами (width / 2, height / 2) есть функция translate () вместо точки (0,0)
записывает координаты (0, height / 2) * / translate (0, height / 2);
/ * значение координат точки х и у определяются значением переменной t * / point (t, sin (t / 10) * 50); t = t + 2; // от кадра к следующему кадру увеличиваем значение переменной на 1 if (keyPressed == true) // если любая клавиша нажата {
saveFrame ( "images / urok - ####. png"); // выполнить запись кадра (фрейма) в папку images }
}
// переменной х возвращается значение переменной t
float x (float t)
{return t;}
// переменной у возвращается значение выражения sin (t / 10) * 50
/* Координата по оси Y изменяется по закону синуса*/ float ny = sin(counter)*100+200;
float nx = counter *10;
stroke (250);
strokeWeight (4);
point(nx,ny);
size(640, 480); smooth(); noStroke();
x = width / 2; y = height / 2;
background(0, 0, 0);
fill(255, 155, 0); ellipse(x, y, r * 2, r * 2);
fill(235, 115, 0); ellipse(x, y, r * 1.5, r * 1.5);
этап3. Шарик, движение
/*глобальные переменные, радиус шарика – r, позиция в экране – x и y, dx и dy – так называемые приращения позиции*/
float r = 50, x, y, dx, dy;
void setup()
{
size(640, 480); smooth(); noStroke(); frameRate(25);
x = width / 2; y = height / 2; dx = -5; dy = 5;
}
void draw()
{
background(0, 0, 0);
x += dx; y += dy;
/*dx и dy – меняют свой знак на противоположный, каждый раз когда шарик выпадает за границу по одной из осей: -5 превращается в 5 и наоборот*/ if ((x > (width - r)) || (x < r)) dx = - dx;
if ((y > (height - r)) || (y < r)) dy = - dy;
fill(255, 155, 0); ellipse(x, y, r * 2, r * 2);
fill(235, 115, 0); ellipse(x, y, r * 1.5, r * 1.5);
}
ellipse(x,y,width,height) рисует эллипс в точке с координатами (х,у) с указанными шириной и высотой
этап 4. Два шарика, функция пользователя float r1 = 50, x1, y1, dx1, dy1;
float r2 = 25, x2, y2, dx2, dy2;
void drawCircle(float x, float y, float r, color c)
{
fill(c); ellipse(x, y, r * 2, r * 2);
fill(red(c) - 25, green(c) - 25, 0); ellipse(x, y, r * 1.5, r * 1.5);
}
Пример 3. Массивы (тема: массивы)
int count = 100;
/*в программе для каждого шарика нужно несколько параметров: x, y, r, dx, dy и c*/
float[] r, x, y, dx, dy;
color[] c;
void define(int i)
{
r[i] = random(20, 55);
x[i] = random(r[i], width - r[i]); y[i] = random(r[i], height - r[i]);
dx[i] = random(3, 5) * zrandom(); dy[i] = random(3, 5) * zrandom();
c[i] = color(irandom(55, 255), irandom(50, 150), 0);
}
void drawing(int i)
{
x[i] += dx[i]; y[i] += dy[i];
if ((x[i] > (width - r[i])) || (x[i] < r[i])) dx[i] = - dx[i];
if ((y[i] > (height - r[i])) || (y[i] < r[i])) dy[i] = - dy[i];
circle(x[i], y[i], r[i], c[i]);
circle(x[i], y[i], r[i] * 0.75, color(red(c[i]) - 15, green(c[i]) - 20, 0));
} // обязательные функции void setup()
{
size(640, 480); smooth(); noStroke(); frameRate(25);
x = new float[count]; y = new float[count]; r = new float[count];
dx = new float[count]; dy = new float[count]; c = new color[count];
for (int i = 0; i < count; i++) define(i);
}
void draw()
{
background(0, 0, 0);
for (int i = 0; i < count; i++) drawing(i);
}
// вспомогательные функции int irandom (int m) { return (int)random(m + 1.0); } int irandom (int mn, int mx) { return (int)random(mn, mx + 1.0); } int zrandom () { return 1 - 2 * irandom(1); } void circle(float x, float y, float r, color c) { fill(c); ellipse(x, y, r * 2, r * 2); }