Освой Processing играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
В Processing очень легко взаимодействовать с клавиатурой. Вы без труда можете определить нажатия клавиши и написать код для этого события.
Напишем небольшой скетч.
int x;
int y;
int radius;
color circleColor;
boolean isDrawStroke;
void setup()
{
size(480, 320);
strokeWeight( 2 );
x = width/2;
y = height/2;
radius = 80;
circleColor = color(255, 0, 0);
isDrawStroke = true;
}
void draw()
{
background(255);
if (isDrawStroke == true) {
stroke(0);
} else {
noStroke();
}
fill(circleColor);
ellipse(x, y, radius * 2, radius * 2);
}
void keyPressed()
{
if (key == CODED) {
if (keyCode == RIGHT) {
x += 10;
}
else if (keyCode == LEFT) {
x -= 10;
}
else if (keyCode == UP) {
y -= 10;
}
else if (keyCode == DOWN) {
y += 10;
}
}
x = constrain( x, radius, width - radius);
y = constrain( y, radius, height - radius );
}
void keyReleased()
{
switch (key) {
case 'r':
circleColor = color(255, 0, 0);
break;
case 'g':
circleColor = color(0, 255, 0);
break;
case 'b':
circleColor = color(0, 0, 255);
break;
case 'c':
circleColor = color(0, 255, 255);
break;
case 'm':
circleColor = color(255, 0, 255);
break;
case 'y':
circleColor = color(255, 255, 0);
break;
default:
break;
}
}
void keyTyped()
{
if ( key == 's' ) {
isDrawStroke = !isDrawStroke;
}
}
Разберём код.
Вначале мы объявили несколько переменных для координат, радиуса и цвета круга. А также назначили булеву переменную для обводки.
В методе setup() задаём первоначальные настройки для круга.
В методе draw() рисуем круг.
Далее идут методы, связанные с клавиатурой: keyPressed(), keyReleased() и keyTyped().
Функция keyPressed() выполняется, когда вы нажимаете на клавишу. В нашем примере мы отслеживаем нажатия клавиш-стрелок и сдвигаем круг в нужном направлении. Чтобы круг не ушёл за пределы окна, мы задаём ограничение при помощи функции constrain().
Функция keyReleased() выполняется, когда вы отпускаете клавишу. В примере мы отслеживаем только некоторые клавиши, чьи символы совпадают с первой буквой цвета: R - red (красный), G - green (зелёный) и т.д.
Функция keyTyped() работает так же, как keyPressed(), но игнорирует специальные клавиши типа стрелок, Enter, Ctrl и Alt. В нашем примере отслеживается клавиша S - при её нажатии у круга появляется или исчезает обводка.
В функциях используются несколько встроенных переменных. Встроенная переменная key содержит значение последней нажатой клавиши. Встроенная переменная keyCode используется для хранения последней нажатой специальной клавиши вроде Shift, Ctrl или стрелки. В этом случае keyCode принимает значения UP, DOWN, LEFT, RIGHT, ALT, CONTROL, SHIFT, BACKSPACE, TAB, ENTER, RETURN, ESC и DELETE.
Одновременное нажатие клавиш, типа Ctrl+A, здесь не рассматривается.
На главную страницу Processing