Table of Contents

[ Введение | Основы | if/else | Циклы | Массивы | Графика | Анимация | Мышь | Клавиатура | Математика | Методы | Текст | Задачи ]


Java для школьников: урок 9

Работа с клавиатурой

С помощью метода getKeyState() можно узнать, нажата ли в настоящий момент нужная клавиша.

Возвращаемое значение Имя метода и параметры Описание
boolean getKeyState(String key) Возвращает true если клавиша нажата

Напишем программу, которая печатает состояние клавиш-стрелок. По клавише Esc программа завершается.

void main() {
    while (true) {
        // Проверяем нажатие клавиш-стрелок
        if (getKeyState("up")) {
            printLine("Вверх");
        }
        if (getKeyState("down")) {
            printLine("Вниз");
        }
        if (getKeyState("left")) {
            printLine("Влево");
        }
        if (getKeyState("right")) {
            printLine("Вправо");
        }
        // По клавише Esc завершаем программу
        if (getKeyState("escape")) {
            break;
        }
        // Каждую секунду печатаем точку
        if (getTimerEvent(1)) {
            print(".");
        }
    }
    printLine("Выполнение завершено.");
}

Обратите внимание: по клавише escape выполняется оператор “break;”, который прерывает выполнение цикла, и в результате программа завершается.

Названия клавиш

В качестве параметра методу getKeyState() передается название клавиши в виде строки. Буквы, цифры и обычные символы можно указывать непосредственно, например “A”, “ж”, “!”. Стрелки и другие специальные клавиши имеют особые имена:

“escape” Клавиша Esc
“f1”, “f2”, “f3”, “f4”, “f5”, “f6”, “f7”, “f8”, “f9”, “f10”, “f11”, “f12” Клавиши F1…F12
“up”, “down”, “left”, “right” Стрелки вверх, вниз, влево, вправо
“page up”, “page down” Клавиши Page Up, Page Down
“home”, “end” Клавиши Home, End
“insert”, “delete” Клавиши Insert, Delete
“backspace” Клавиша Backspace
“enter” Клавиша Enter
“tab” Клавиша Tab
“space” Пробел
“print screen” Клавиша Print Screen
“scroll lock” Клавиша Scroll Lock
“pause” Клавиша Pause
“caps lock” Клавиша Caps Lock
“num lock” Клавиша Num Lock
“meta” Клавиша Meta
“control” Клавиша Control
“shift” Клавиша Shift
“alt” Клавиша Alt

Двигаем шарик

На прошлом занятии мы двигали красный шарик с помощью мыши. Теперь будем двигать его клавишами-стрелками.

void main() {
    // Объявляем переменные x и y
    int x = 0;
    int y = 0;
 
    // Начинаем цикл
    while (true) {
        // Проверяем нажатие клавиш-стрелок
        if (getKeyState("up")) {
            if (y >= 20)
                y = y - 20;
        }
        if (getKeyState("down")) {
            if (y < getDrawingHeight() - 60)
                y = y + 20;
        }
        if (getKeyState("left")) {
            if (x >= 20)
                x = x - 20;
        }
        if (getKeyState("right")) {
            if (x < getDrawingWidth() - 60)
                x = x + 20;
        }
        // Если прошло достаточно времени, передвигаем шарик
        if (getTimerEvent(0.05)) {
            // Рисуем шарик
            clearDrawing();
            setColor(red);
            fillCircle(x, y, 20);
 
            if (y < getDrawingHeight() - 42) {
                // Смещаем каждый раз вниз на 2 точки
                y = y + 2;
            }
        }
        // Заканчиваем цикл
    }
}

Упражнения:


Перейдем к следующему уроку.