Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2011, 16:36   #1
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию Переход границы через курсор мышки

Здравствуйте форумчане.
Моя проблема состоит в том, что при заливке квадрата заливается и соседний, когда курсор мышки находится на их границе.
Делать HideMouse или в этот момент задать желаемые координаты мышке не поучится, поскольку процесс заливки происходит до нажатия мышки.
Внутри квадрата происходит "движение шарика".
Как можно заливать цвет, чтобы курсор не являлся бы мостом между этими двумя квадратами?

Код:
while LeftButtonPressed do readmouse;
               circeny := circeny - 9;
               setcolor(mat[ pressedx, pressedy]);
               while not into do
               begin

                 for i := 1 to 18 do
                 begin
                    readmouse;
                    if ((MouseX < pmx) and (MouseX > (pmx - lencub))) and
                       ((MouseY < pmy) and (MouseY > (pmy - lencub)))
                                        then HideMouse;
                    Delay(100);
                    circeny := circeny + k;
                    Setfillstyle(1,8);
                    floodfill( circenx, circeny, 7);
                    circle(circenx, circeny, 10);
                    Setfillstyle(1,mat[ pressedx, pressedy]);
                    floodfill( circenx, circeny, mat[ pressedx, pressedy]);
                    Delay(5555);
                    ShowMouse;
                    readmouse;
                    if into then break;
                 end;
                 k := k * (-1);
              end;
circenx - x центр квадрата в пиксельях
circeny - y центр квадрата в пиксельях

функция into проверят был ли клик в нужной области.

pressedx - номер строки квадрата в матрице
pressedy - номер столбца квадрата в матрице
Акоб вне форума Ответить с цитированием
Старый 10.11.2011, 11:56   #2
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Я не понял, почему не получится спрятать курсор. Это, на мой взгляд, самое правильное действие в данной ситуации.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 14.11.2011, 15:29   #3
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Потому что это действие повторяется много раз. Пока игрок не нажмет на левую кнопку мыши.В течении этого времени мышка должна быть видна.
Акоб вне форума Ответить с цитированием
Старый 15.11.2011, 07:46   #4
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Акоб, приведи, пожалуйста, кусок кода, как ты это делаешь. А то так разговор беспредметный выходит..
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 15.11.2011, 09:22   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Моя проблема состоит в том, что при заливке квадрата заливается и соседний, когда курсор мышки находится на их границе.
Не заливать ничего в этот момент (курсор на границе) Мы находимся ВНЕ квадрата.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 18.11.2011, 05:42   #6
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

TinMan, код я привел наверху.

evg_m, вы не правы, курсор не состоит из одной точки.Часть курсора находится на одном квадрате, а другая на другом.

Проблема решилась, я отказался от функции floofill, и написал другую, которая закрашивает прямоугольник заданным цветом.
Акоб вне форума Ответить с цитированием
Старый 18.11.2011, 05:53   #7
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Если кому-нибудь понадобится, то здесь ест готовый код.И еще библиотеки для работы с мышкой. Если понадобится посмотреть код добавьте mouse.pas, mouse.tpu в папку BIN.
Если будут вопросы обращайтесь.)
Игра называется MyLines.
Вложения
Тип файла: rar mylines2.rar (40.7 Кб, 9 просмотров)
Акоб вне форума Ответить с цитированием
Старый 18.11.2011, 10:43   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
evg_m, вы не правы, курсор не состоит из одной точки.Часть курсора находится на одном квадрате, а другая на другом.
Курсор мыши есть координаты одной единственной точки экрана. Для стандартного курсора стрелки это ее острие,
То что вы называете курсором есть часть изображения (иазовем это изображением курсора). Если вы его рисуете то у вас есть его координаты (можете их где-то хранить). Если есть его координаты (даже если это просто набор точек),то Вы всегда можете исключить заливку для этих "курcорных" координат. И кто мешает рисовать этот курсор контрастным цветом, препятствующим переходу заливки, если уж у вас обработка привязана к визуальному виду, а не к внутреннему состоянию.
На картинке которую вы модифицируете НЕ ДОЛЖНО БЫТЬ НАРИСОВАННОГО ВАМИ ЖЕ КУРСОРА. В программе есть только координаты его положения на картинке.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 26.11.2011, 16:19   #9
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Начнем с того, что я не рисую курсор, я его один раз инициализирую, после чего вызываю функцию ShowMouse и изображение курсора появляется.Каким образом я могу исключить заливку курсорных координат, пользуясь функцией floodfill?
Картинку я модифицирую не один раз, я это делаю постоянно. И убрать курсор от туда я не могу. В игре нажимаешь на квадрат, а программа убирает мышку от туда? Так что-ли?
Акоб вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить границы диапазона через InputBox kipish_lp Microsoft Office Excel 4 18.08.2010 14:14
Как Переход в ячейку через двойное условие? Talisman Microsoft Office Excel 11 21.11.2009 15:32
уберите курсор (в конце программы верните курсор), HECTOR.A. Паскаль, Turbo Pascal, PascalABC.NET 2 05.06.2009 20:10
Границы DIV Ururu HTML и CSS 5 27.04.2009 01:44
Границы ячеек AnnNet Microsoft Office Excel 4 20.02.2009 12:19