Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Processing:Примеры/Массив объектов

Материал из Онлайн справочника
Перейти к: навигация, поиск


Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

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


Ambox content.png Черновик


Описание[1]

Демонстрирует создание массива, содержащего объекты с нестандартными характеристиками.

Пример

  1. int unit = 40;
  2. int count;
  3. Module[] mods;
  4.  
  5. void setup() {
  6.   size(640, 360);
  7.   noStroke();
  8.   int wideCount = width / unit;
  9.   int highCount = height / unit;
  10.   count = wideCount * highCount;
  11.   mods = new Module[count];
  12.  
  13.   int index = 0;
  14.   for (int y = 0; y < highCount; y++) {
  15.     for (int x = 0; x < wideCount; x++) {
  16.       mods[index++] = new Module(x*unit, y*unit, unit/2, unit/2, random(0.05, 0.8), unit);
  17.     }
  18.   }
  19. }
  20.  
  21. void draw() {
  22.   background(0);
  23.   for (Module mod : mods) {
  24.     mod.update();
  25.     mod.display();
  26.   }
  27. }
  28. class Module {
  29.   int xOffset;
  30.   int yOffset;
  31.   float x, y;
  32.   int unit;
  33.   int xDirection = 1;
  34.   int yDirection = 1;
  35.   float speed;
  36.  
  37.   // конструктор:
  38.   Module(int xOffsetTemp, int yOffsetTemp, int xTemp, int yTemp, float speedTemp, int tempUnit) {
  39.     xOffset = xOffsetTemp;
  40.     yOffset = yOffsetTemp;
  41.     x = xTemp;
  42.     y = yTemp;
  43.     speed = speedTemp;
  44.     unit = tempUnit;
  45.   }
  46.  
  47.   // пользовательская функция
  48.   // для обновления значений в переменных:
  49.   void update() {
  50.     x = x + (speed * xDirection);
  51.     if (x >= unit || x <= 0) {
  52.       xDirection *= -1;
  53.       x = x + (1 * xDirection);
  54.       y = y + (1 * yDirection);
  55.     }
  56.     if (y >= unit || y <= 0) {
  57.       yDirection *= -1;
  58.       y = y + (1 * yDirection);
  59.     }
  60.   }
  61.  
  62.   // пользовательская функция для рисования объектов:
  63.   void display() {
  64.     fill(255);
  65.     ellipse(xOffset + x, yOffset + y, 6, 6);
  66.   }
  67. }

См.также

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

  1. processing.org - Array Objects