Processing:Примеры/Отскок

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Описание[1]

Когда фигура достигает края экрана, направление ее движения меняется на противоположное.

Пример

int rad = 60;        // ширина фигуры
float xpos, ypos;    // стартовая позиция фигуры    

float xspeed = 2.8;  // скорость фигуры по оси X
float yspeed = 2.2;  // скорость фигуры по оси Y

int xdirection = 1;  // направление движения по оси X
int ydirection = 1;  // направление движения по оси Y


void setup() 
{
  size(640, 360);
  noStroke();
  frameRate(30);
  ellipseMode(RADIUS);
  // задаем стартовую позицию фигуры:
  xpos = width/2;
  ypos = height/2;
}

void draw() 
{
  background(102);
  
  // обновляем позицию фигуры:
  xpos = xpos + ( xspeed * xdirection );
  ypos = ypos + ( yspeed * ydirection );
  
  // проверяем, не заходит ли фигура за края экрана;
  // если заходит, инвертируем направление ее движения,
  // умножая его на «-1»:
  if (xpos > width-rad || xpos < rad) {
    xdirection *= -1;
  }
  if (ypos > height-rad || ypos < rad) {
    ydirection *= -1;
  }

  // рисуем фигуру:
  ellipse(xpos, ypos, rad, rad);
}

См.также

Внешние ссылки