Показать сообщение отдельно
Старый 01.09.2008, 08:14   #27
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_game (Game API Support)

Try to use Lib_sensor. You can download this lib below.

List of new functions:
  • init
  • integer pointer_state
  • integer pointer_pressed_x
  • integer pointer_pressed_y
  • integer pointer_dragged_x
  • integer pointer_dragged_y
  • integer pointer_released_x
  • integer pointer_released_y
  • integer has_pointer_events
  • integer has_pointer_motion_events

Here some examples:

Program PointerTest;
Uses    sensor;
Var    
ox, oy, px, py, state: integer;
Begin
    sensor
.init; // Инициализация библиотеки
    
repeat // Бесконечный цикл
        
state:=pointer_state; // Читаем состояние сенсора
        
if state=1 then // Если нажали, то...
        
begin
            
if (ox=0) and (oy=0) then
            begin
                ox
:=pointer_dragged_x; oy:=pointer_dragged_y;
            
end;
            
px:=pointer_dragged_x; py:=pointer_dragged_y; // Выясняем куда именно нажали (координаты)
            
DrawLine(ox,oy,px,py); // Рисуем линию
                        
ox:=px; oy:=py; // Запоминаем предыдущую точку для рисования следующей линии
        
end;
        else 
begin ox:=0; oy:=0; end; // Если ничего не нажали - сбрасываем координаты в 0
        
Repaint; Delay(20); // Отрисовка линии и небольшая пауза
    
until false;
End. 
Program PointerTest2;
Uses    sensor;
Var    
xx, yy, state, key: integer;

Procedure DrawButtons; // Вспомогательная процедурка, которая рисует на экране кнопки
begin
    SetColor
(255,255,255); // Белый цвет
    
if key=1 then SetColor(255,0,0); // Если была нажата кнопка 1 - ставим красный цвет
    
if key=2 then SetColor(0,255,0); // Если кнопка 2 - зеленый
    
FillRect(0,0,GetWidth,GetHeight); // Закрашиваем весь экран выбранным цветом
    
SetColor(0,0,0); // Ставим черный цвет
    
DrawRect(10, 10, 100, 25); DrawText('Button 1', 15, 15); // Рисуем первую кнопку
    
DrawRect(10, 40, 100, 25); DrawText('Button 2', 15, 45); // Рисуем вторую кнопку
    
DrawRect(10, 70, 100, 25); DrawText('Quit', 15, 75); // Рисуем третью
    
Repaint; // Окончательный вывод всего нарисованного на дисплей
end;

Begin // Начало нашей программы
    
sensor.init; // Инициализация библиотеки
    
DrawButtons; // Рисуем кнопки на экране (см. процедуру выше)
    
repeat // Начинаем бесконечный цикл
        
state:=pointer_state; // Читаем состояние сенсора
        
if state=1 then // Если произошло нажатие, то...
        
begin
            xx
:=pointer_pressed_x; yy:=pointer_pressed_y; // Считываем координаты нажатия
            
if (xx>9) and (xx<111) then // Проверяем сначала x координату...
            
begin
                
if (yy>9) and (yy<36) then key:=1; // Нажали на кнопку 1
                
if (yy>39) and (yy<66) then key:=2; // Нажали на кнопку 2
                
if (yy>69) and (yy<96) then Halt; // Нажали на кнопку 3 (Выход)
                
DrawButtons; // Рисуем кнопки
            
end;
        
end;
                
Delay(30);
    
until false;
End. 
Вложения
Тип файла: zip Lib_sensor.zip (1.2 Кб, 1524 просмотров)
(Offline)
 
Ответить с цитированием