Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 27.01.2011, 18:02   #1
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Вопрос Сенсоры и прямая линия.

Написал функцию отрисовки линии с помощью сенсора. По задумке она должна точно рисовать линию на подобие пейнтовской. Тоесть как бы "царапать" экран).
Но иногда она работает не корректно. А именно: с самого начала рисует линию из начала координат и принимает координаты конца предыдущей линии за начало новой линии. Исчезать она должна - это не баг.
program line;
uses sensor;

var x, y, xline, yline, pointer_x, pointer_y, first_pointer_x, first_pointer_y, pointer_time, pe: integer; 
    keyCode: integer; 
begin
    sensor.init;
  repeat
    SetColor(255, 255, 255);
    FillRect(0, 0, GetWidth, GetHeight);
    SetColor(0, 0, 0);
    keyCode:= GetKeyPressed;
        pe:=pointer_state;    
        pointer_x:=pointer_dragged_x;
        pointer_y:=pointer_dragged_y; 
 
        If pe>0 then begin
            DrawLine(first_pointer_x,first_pointer_y,pointer_x,pointer_y);
            DrawText('+',pointer_x,pointer_y);
            if pointer_time=0 then begin
                first_pointer_x:= pointer_dragged_x;
                first_pointer_y:= pointer_dragged_y;    
            end;
            if pointer_time>0 then begin
                pointer_x:= pointer_dragged_x;
                pointer_y:= pointer_dragged_y;    
            end;
            pointer_time:=pointer_time+1;
        end;
        if pe=0 then begin
                pointer_time:=0;
                first_pointer_x:= pointer_x;
                first_pointer_y:= pointer_y;
        end;
    Repaint;
  until (keyCode = KE_KEY0) or (KeyToAction(keyCode) = GA_FIRE); 
end.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 27.01.2011, 20:29   #2
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Сенсоры и прямая линия.

Проблема решена.
Код:
program line;
uses sensor;

var x, y, xline, yline, pointer_x, pointer_y, first_pointer_x, first_pointer_y, pointer_time, pe: integer; 
    keyCode: integer; 
begin
    sensor.init;
  repeat
        SetColor(255, 255, 255);
    FillRect(0, 0, GetWidth, GetHeight);
    SetColor(0, 0, 0);
    keyCode:= GetKeyPressed;
        pe:=pointer_state;     
        DrawText(IntegerToString(pe),0,0);
        DrawText(IntegerToString(pointer_time),0,20);
        If pe>0 then begin
            //if has_pointer_motion_events=1 then begin
                    first_pointer_x:=pointer_pressed_x;
                    first_pointer_y:=pointer_pressed_y;
                    //pointer_x:= pointer_released_x;
                    //pointer_y:= pointer_released_y;
                    pointer_x:=pointer_dragged_x;
                    pointer_y:=pointer_dragged_y;
            //end;
            DrawLine(first_pointer_x,first_pointer_y,pointer_x,pointer_y);
            DrawText('+',pointer_x,pointer_y);
            
        end;

    Repaint;
  until (keyCode = KE_KEY0) or (KeyToAction(keyCode) = GA_FIRE); 
end.
З.Ы. Хорошая тенденция: пишу и ожидая ответа допираю до решения сам...
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 28.01.2011, 02:36   #3
aNNiMON
AnyKey`щик
 
Аватар для aNNiMON
 
Регистрация: 20.12.2008
Сообщений: 13
Написано 4 полезных сообщений
(для 12 пользователей)
Ответ: Сенсоры и прямая линия.

А так всегда, пока всё держишь в голове, ничего не понимаешь, а как-только начинаешь излагать суть проблемы, то мысли выравниваются и всё становится понятным
__________________
Use a music as a weapon
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо aNNiMON за это полезное сообщение:
Gector (28.01.2011), Nex (28.01.2011), Reks888 (29.01.2011)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 03:35.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com