[ [[tutorial-ru-001 | Введение]] | [[tutorial-ru-002 | Основы]] |
[[tutorial-ru-003 | if/else]] | [[tutorial-ru-004 | Циклы]] |
[[tutorial-ru-005 | Массивы]] | [[tutorial-ru-006 | Графика]] |
[[tutorial-ru-007 | Анимация]] | [[tutorial-ru-008 | Мышь]] |
[[tutorial-ru-009 | Клавиатура]] | [[tutorial-ru-010 | Математика]] |
[[tutorial-ru-011 | Методы]] | [[tutorial-ru-012 | Текст]] |
[[tutorial-ru-013 | Задачи]] ]
----
== 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, правой - стрелками вверх-вниз. Шарик должен отскакивать от ракеток. Поиграйте с друзьями в получившуюся игру. Что можно улучшить в программе, чтобы играть было интереснее?
* Напишите игру "тетрис".
----
[[tutorial-ru-010 | Перейдем к следующему уроку]].