Введення з клавіатури
У процесі роботи проекту відбувається постійне зчитування подій, які відбуваються: рухи мишкою, натиснення кнопок клавіатури тощо. У цьому розділі - саме про події клавіатури.
Існує функція 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));
}