[ Введение | Основы | 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, правой - стрелками вверх-вниз. Шарик должен отскакивать от ракеток. Поиграйте с друзьями в получившуюся игру. Что можно улучшить в программе, чтобы играть было интереснее?
  • Напишите игру “тетрис”.

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

 
proj/lang/judo/tutorial-ru-009.txt · Последние изменения: 2007/03/10 04:28
 
Copyright (C) 1996-2013 Serge Vakulenko
serge@vak.ru