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; } } // Заканчиваем цикл } }
Упражнения:
- Измените программу так, чтобы стрелки изменяли не положение шарика, а его скорость. Причем скорость должна уменьшаться со временем до нуля.
- Научите шарик отскакивать от стенок.
- Пусть шарик свободно летает, отскакивая от верхней и нижней стенок. У правой и левой стенок поставьте “теннисные ракетки”. Положение левой ракетки управляется клавишами A и Z, правой - стрелками вверх-вниз. Шарик должен отскакивать от ракеток. Поиграйте с друзьями в получившуюся игру. Что можно улучшить в программе, чтобы играть было интереснее?
- Напишите игру “тетрис”.