| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Перетаскивание изображений |
| Автор: zozo1987 27.4.2007, 02:31 | ||||
Пишу игру в уголки. Эта игра основана на перемещениях шашек со своими правилами Это шахматная доска:
Это на ней выставляются шашки:
Теперь хочу сделатьтак, чтобы мышкой перетаскивать шашку с одной клетки на другую: Думал с помощью OnDragDrop. Прочитал, что надо установить значения свойств DragMod равные dmAutomatic. не могу понять как это сделать, подскажите, пожалуйста, ламеру . Или может подскажете, как еще можно сделать ето перетаскивание. Буду очень благодарен. |
| Автор: SenkraD 27.4.2007, 09:17 |
| Можно через события миши. А вообще вот по культину пятнашки писал мож поможет |
| Автор: fish9370 27.4.2007, 21:37 | ||
| рад, что тебе помог мой код переходим ко вротой фазе создания игры - перетаскивание шашек.. думаю, на этом этапе для тебя это слишком сложно и придется упростить ситуацию, либо, если тебя это устроит, перетаскивать будем не шашку, а ее контур.. упростить ситуацию можно следующим образом: указывать шашку, которая должна сделать ход, и указать место, куда она должна переместиться.. здесь придется обрабатывать событие OnClick, расчитывать координаты, определять допустимость хода.. второй вариант, основывается на обработке трех событий: OnMouseDown, OnMouseMove и OnMouseUp.. сначала при щелчке мы (OnMouseDown) определяем начальное положение объекта (x0,y0) и объявляем, что происходит перемещение.. дальше автоматически срабатывает событие OnMouseMove, расчитвыаем положение объекта относительно (x0,y0).. в конце, при отпускании кнопки срабатывает событие OnMouseUp, где мы перерисовываем объект на новом месте и указываем, что перемещение должно быть завершено.. реализация должна выглядить примерно так:
примечание к коду: это не готовое решение!! конструкции типа: "r=((TControl*)Sender)->BoundsRect;" необходимо заменить на соответсвующие задаче действия.. но идея, надеюсь понятна.. удачи!! |
| Автор: zozo1987 8.5.2007, 21:59 |
| Огромное спасибо fish9370 и всем, кто помагал советами и кодом |