Уроки, Туториалы, Мануалы со всего света!
https://lessons.forumenko.com/

Midlet Pascal. Передвигаем текст с помошью клавиш.
https://lessons.forumenko.com/topic81.html
Страница 1 из 1

Автор:  DiAm [ 14-03, 16:56 ]
Заголовок сообщения:  Midlet Pascal. Передвигаем текст с помошью клавиш.

Передвижение текста.

Итак, в этом уроке я научу вас передвигать текст с помошью клавиш.
Нам нужно 3 переменные типа Integer: координаты x,y и KeyCode-код нажатой клавиши.

Код:
var
  x,y,KeyCode:integer;


Делаем цикл чтобы программа выполнялась до тех пор, пока не будет нажата клавиша "0"

Repeat

тут после будут наши команды

until keyCode = KE_KEY0;

Внутри цикла пропишем команду получения кода клавиши.

keycode:=GetKeyPressed

GetKeyPressed - Получает код нажатой клавиши в данный момент.

ke_key0-это код клавиши 0.(Все коды будут приведены ниже).

Теперь пропишем команды для стрелок(внутри цикла).

if KeyToAction(keyCode) = GA_UP then y := y - 5;
if KeyToAction(keyCode) = GA_DOWN then y := y + 5;
if KeyToAction(keyCode) = GA_LEFT then x := x - 5;
if KeyToAction(keyCode) = GA_RIGHT then x := x + 5;

То есть: при нажатии определенной стрелочки мы изменяем координату x или y на определенное кол-во пикселей(чем больше, тем быстрее будет двигаться текст).

Установим цвет в черный:

SetColor(0,0,0)

Теперь нужно очистить экран. Для этого просто нарисуем прямоугольник на весь экран. Прямоугольник рисуется командой FillRect(x1,y1,x2,y2)
где x1,y1-координаты верхней левой вершины прямоугольника, а x2,y2-координаты правой нижней вершины прямоугольника.

Разрешение у телефонов разное, поэтому цифрами задать нижнюю координату не получится.
С помошью процедур GetWidth и GetHeight узнаем максимальное X и максимальное y соответственно.

Итак, пропишем команду очистки экрана:

FillRect(0,0,GetWidth,GetHeight);

Теперь установим цвет в красный:
SetColor(255,0,0)

Выведем текст на экран в позиции x,y (которую мы изменяли с помощью клавиш)
DrawText('Специально для lessons.flybb.ru',x,y)
Выводим виртуальный экран на реальный:
Repaint
И небольшая задержка:
Delay(100)

Всё это должно быть в цикле!

Полный листинг:

Код:

program MoveText;

var x, y: integer;
keyCode: integer;

begin
repeat
keyCode := GetKeyPressed; 

if KeyToAction(keyCode) = GA_UP then y := y - 5;
if KeyToAction(keyCode) = GA_DOWN then y := y + 5;
if KeyToAction(keyCode) = GA_LEFT then x := x - 5;
if KeyToAction(keyCode) = GA_RIGHT then x := x + 5;

SetColor(0, 0, 0);
FillRect(0, 0, GetWidth, GetHeight);
SetColor(255, 0, 0); 
DrawText('Специально для lessons.flybb.ru', x, y); 
Repaint;
Delay(100);

until keyCode = KE_KEY0;
end.



Вот и все!

Приложение. Коды клавиш

    KE_KEY0

    KE_KEY1

    KE_KEY2

    KE_KEY3

    KE_KEY4

    KE_KEY5

    KE_KEY6

    KE_KEY7

    KE_KEY8

    KE_KEY9

    KE_STAR

    KE_POUND

    GA_UP

    GA_DOWN

    GA_LEFT

    GA_RIGHT

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/