MIDlet Pascal
Поиск по сайту
Форма входа

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Яндекс.Метрика

Друзья сайта
IT юмор - развлечения
Заработать в интернете - легко!Просто сиди и кликай.
Суббота, 24.02.2018, 15.03.30
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход
Урок №4 "Клавиатура телефона"
Здравствуйте.В этом уроке вы научитесь работать с клавиатурой телефона. Клавиатура телефона при нажатии на клавиши, отправляет код нажатой клавиши. В разных производителей телефонов немного отличаются скан коды клавиш.Вот таблица:
Клавиша    Siemens  Sony
  Ericsson
  
  Nokia    Motorola  
048484848
149494949
250505050
351515151
452525252
553535353
654545454
755555555
856565656
957575757
*42424242
#35353535
Вверх- 59- 1- 11 (- 1)
Вниз- 60- 2- 26 (- 2)
Влево- 61- 3- 32 (- 3)
Вправо- 62- 4- 45 (- 4)
Огонь- 26- 5- 520 (- 5)
Взять трубку- 11  - 10
Положить трубку- 12   
Левая софтклавиша- 1- 6 21
  Правая софтклавиша  - 4- 7 22
Меню   23
Стереть - 8- 80
Назад - 11 0
Громкость +   - 1 (- 100)
Громкость -   - 2 (- 101)

Но есть и готовые константы с помощью которых код можно сделать более читаемым.Вот таблица:
·KE_KEY0 // Клавиша 0 
·KE_KEY1 // Клавиша 1 
·KE_KEY2 // Клавиша 2 
·KE_KEY3 // Клавиша 3 
·KE_KEY4 // Клавиша 4 
·KE_KEY5 // Клавиша 5 
·KE_KEY6 // Клавиша 6 
·KE_KEY7 // Клавиша 7 
·KE_KEY8 // Клавиша 8 
·KE_KEY9 // Клавиша 9 
·KE_STAR // Клавиша * 
·KE_POUND // Клавиша # 

Для того что бы считать нажатую клавишу, нужно присвоить любой переменной значение функции GetKeyPressed или GetKeyClicked.Какое между ними отличие? Отличие между ними в том, что GetKeyPressed –возвращает код нажатой клавиши, а GetKeyClicked возвращает код нажатой и отпущенной клавиши
Например:

Var key:integer; //объявляем переменную
Begin
  DrawText('Нажмите 0', 0 ,0);
  Repaint;
  While key<>KE_KEY0 do key:=GetKeyPressed; //запускаем цикл считывания клавиши, до тех пор, пока ненажмут 0
End.

Ну вот вы и научились работать с цифровой клавиатурой.Давайте теперь разберёмся с игровыми клавишами огонь,А,В,С,D,влево,вправо,вверх,вниз.Вот эти константы:
· GA_NONE - Ничего не нажато 
·GA_UP - Вверх 
·GA_DOWN - Вниз 
·GA_LEFT - Влево 
·GA_RIGHT - Вправо 
·GA_FIRE - Огонь 
·GA_GAMEA - Дополнительная клавиша джойстика A 
·GA_GAMEB - Дополнительная клавиша джойстика B 
·GA_GAMEC - Дополнительная клавиша джойстика C 
·GA_GAMED - Дополнительная клавиша джойстика D 

, но они работают только с функцией KeyToAction(Key) пример:

Var key:integer; //объявляем переменную
Begin
  DrawText(‘Нажмите 0, 0 ,0);
  Repaint;
  While KeyToAction(key)<>GA_FIRE do key:=GetKeyPressed; //запускаем цикл считывания клавиши, до тех пор, пока на нажмут огонь
End.

Ну вот вы и научились работать с клавиатурой.Давайте теперь попытаемся сделать приложение в котором принажатии клавиш будет двигаться картинка по экрану

Var x,y,Key:integer; //создаём переменные положения картинки и переменную для считывания клавиши
       Im:image; //Создаём переменную с картинкой
Begin
  Im:=LoadImage('/icon.png'); //проводим инициализацию
  SetColor(255,255,255); //Устанавливаем белый цвет
  Repeat //Создаём цикл
    Key:=GetKeyPressed; //Считываем нажатую клавишу
    If KeyToAction(Key)=GA_LEFT then x:=x-1;  //Делаем действие согласно нажатой клавиши
    If KeyToAction(Key)=GA_RIGHT then x:=x+1;
    If KeyToAction(Key)=GA_UP then y:=y-1;
    If KeyToAction(Key)=GA_DOWN then y:=y+1;
    FillRect(0,0,GetWidth,GetHeight); //Создаём закрашенный прямоугольник по данным х,у,ширина,высота
    DrawImage(im,x,y);
    Repaint;
    Delay(50);
  Until KeyToAction(Key)=GA_FIRE; //цикл будет работать пока не нажмут огонь
End.

Поздравляю‼Вы прошли урок №4
← Урок №3Урок №5 →
Если вы нашли ошибки/очепятки в тексте то сообщите о них на форуме
А также можете заказать программу/игру на этой странице

www.parkflyer.ru - радиоуправляемые модели, радиоуправляемые модели самолетов, магазин радиоуправляемых моделей
Роспись стен, скульптуры на заказ
Wladymyr © 2012-2018
Создать бесплатный сайт с uCoz