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