У процесі роботи проекту відбувається постійне зчитування подій, які відбуваються: рухи мишкою, натиснення кнопок клавіатури тощо. У цьому розділі - саме про події клавіатури.


Існує функція void keyPressed() , яка викликається 1 раз, щоразу як натиснена будь-яка кнопка. При цьому системна змінна key містить значення останньої натисненої кнопки клавіатури. Передбачені деякі стандартні значення кнопок змінної key, які можна використати у проекті: BACKSPACE, TAB, ENTER, RETURN, ESC, та DELETE.

if (keyTyped) {

    if ((key == 'b') || (key == 'B')) { }

}

Для кнопок за межами таблиці кодування ASCII слід використовувати змінну keyCode. Наприклад, це значення стрілок UP, DOWN, LEFT, та RIGHT, а також ALT, CONTROL, і SHIFT. Перед тим, як перевіряти натиснення цих кнопок є зміст перевірити, чи натиснена кнопка за межами таблиці кодування ASCII:

if (key == CODED) {

    if (keyCode == UP) { }

}


Зверніть увагу! Для початку роботи функції keyPressed() потрібно клацнути у вікні працюючої програми для активації, а тоді натискати кнопки клавіатури.


Вправа. Різнокольоровий квадрат.

У центрі екрану малюється червоний квадрат. При натисненні будь-якої клавіші на клавіатурі, колір квадрату змінюється на випадковий.

color c;
void setup() {
  size(500, 500);
  c=color (255,0,0);
}

void draw() {
  background(120,120,120);
  fill(c);
  rect(200,200,50, 50);
}

void keyPressed() {
  int red=int(random(255));
  int green=int(random(255));
  int blue=int(random(255));
  c=color(red,green,blue);
}


Вправа. Рухомий квадрат.

Крім випадкової зміни кольору при натисненні будь-якої клавіші, квадрат рухається при натисненні клавіш зі стрілками.

color c;
int x,y;
void setup() {
  size(500, 500);
  c=color (255,0,0);
  x=250;  y=250;
}

void draw() {
  background(120,120,120);
  fill(c);
  rect(x,y,50, 50);
}

void keyPressed() {
  int red=int(random(255));
  int green=int(random(255));
  int blue=int(random(255));
  c=color(red,green,blue);
  if (key == CODED) {
    if (keyCode == UP) {y--;}
    if (keyCode == DOWN) {y++;}
    if (keyCode == LEFT) {x--;}
    if (keyCode == RIGHT) {x++;}
  }
}


Вправа. Рухомий квадрат з поверненням до червоного.

До попередньої програми додамо опцію: якщо натиснена клавіша з літерою r (великою або малою) - колір квадрата стає червоний.

color c;
int x,y;
void setup() {
  size(500, 500);
  c=color (255,0,0);
  x=250;  y=250;
}

void draw() {
  background(120,120,120);
  fill(c);
  rect(x,y,50, 50);
}

void keyPressed() {
  int red=int(random(255));
  int green=int(random(255));
  int blue=int(random(255));
  c=color(red,green,blue);
  if (key == CODED) {
    if (keyCode == UP) {y--;}
    if (keyCode == DOWN) {y++;}
    if (keyCode == LEFT) {x--;}
    if (keyCode == RIGHT) {x++;}
  }
  if (keyTyped) {
    if ((key == 'r') ||( key == 'R')) {c=color (255,0,0);}
  }
}


Вправа* Зникаючі літери.

У цьому проекті спочатку робоча область зафарбована суцільним синім кольором. У функції keyPressed() відбувається виведення тексту (а саме - натисненої кнопки), у випадкових координатах, і випадкового розміру. Заливка цього тексту - жовтого кольору.

При цьому в функції draw()  відбувається малювання прямокутника, що за розміром відповідає робочій області, кольором початкового тла з прозорістю 20 (четверта координата коду кольору). Таким чином, за кілька виконань цієї процедури ми досягаємо практично повного зафарбування жовтої літери.

void setup() {
  size(400, 400);
  background(51,85,204);
}

void draw() {
  fill(51,85,204, 20);
  rect(0,0,width, height);
}

void keyPressed() {
  fill(255,226,0);
  textSize(random(20, 200));
  text(key, random(400), random(400));
}



Остання зміна: Пʼятниця 15 травня 2020 07:35 AM