как установить случайный размер текста на каждую букву один раз? (обработка)

как я могу установить случайный размер для каждой буквы, которая распространяется? Я хочу, чтобы у каждого из них был разный случайный размер, но я не могу понять, куда поместить textSize (random(10, 20));, потому что, если я поставлю его под отрисовку, он просто повторяется снова и снова, что каждый кадр размер текста каждой буквы изменяется, но когда я поместите его в настройку, он просто изменит размер всех букв.

String message = "Alice fell into the rabbit hole";
int x =  130;
int y = 90;

Letter[] letters;

void setup() {
  size(260, 200);
  letters = new Letter[message.length()];
  textSize (random(10, 20));

  for (int i = 0; i < message.length(); i++) { 
    letters[i] = new Letter(x, y, message.charAt(i));
    //x += textWidth(message.charAt(i));
  }
}

void draw() { 
  background(255);
  for (int i = 0; i < letters.length; i++) { 
    letters[i].display(); 
    letters[i].shake();
  }
}

class Letter {
  char letter;
  float x, y;

  Letter (float x, float y, char letter) {
    this.x = x;
    this.y = y;
    this.letter = letter;
  }

  void display() {
    fill(0);
    textAlign(CENTER, CENTER);
    text(letter, x, y);
  }

  void shake() {
    x += random(-2, 2);
    y += random(-2, 2);
  }
}

person Noob processor    schedule 20.07.2017    source источник


Ответы (1)


Ваш класс Letter инкапсулирует все, что касается конкретной буквы. Итак, если вам нужен случайный размер для каждой буквы, вы должны сохранить этот размер в классе Letter.

Если вы хотите, чтобы размер одной буквы был одинаковым на протяжении всего жизненного цикла программы, вы должны установить этот размер в конструкторе.

Затем вы должны использовать этот размер в функции display(), прежде чем рисовать букву.

person Kevin Workman    schedule 20.07.2017
comment
о, хорошо, я попробую это - person Noob processor; 21.07.2017
comment
можно спросить где и что такое конструктор? :) - person Noob processor; 21.07.2017
comment
@Noobprocessor Вы пробовали погуглить? Подсказка: ваш класс уже содержит конструктор. - person Kevin Workman; 21.07.2017
comment
хорошо понял что это значит! взял меня день лол! что вы имеете в виду, что я использую размер в функции display() перед рисованием буквы? :) - person Noob processor; 21.07.2017
comment
@Noobprocessor Что ты пробовал? Как вы думаете, что я имею в виду? Прямо сейчас вы устанавливаете размер текста только один раз, и каждая буква использует этот размер. Похоже, вы хотите установить размер текста для каждой буквы. Как вы думаете, вы бы это сделали? - person Kevin Workman; 21.07.2017
comment
nvm я уже понял!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! спасибоуу! - person Noob processor; 21.07.2017