15 / 0 / 0
Регистрация: 16.09.2009
Сообщений: 32
|
|
1 | |
Пятнашки03.09.2010, 20:21. Показов 7801. Ответов 61
Метки нет Все метки)
(
Доброго времени суток! Помогите решить следующую задачу:
Нужно написать программу наподобие игры пятнашки... Суть проблемы в следующем: имеется несколько квадратных блоков, в которых записаны буквы... нужно чтобы при перетаскивании одного блока на соседний этот блок вставал на его место, а соседний на место перетаскиваемого (написать всё это нужно с помощью Drag&Drop или Drag&Dock (если это возможно))... Помогите пожалуйста, не знаю даже с чего начать и какие компоненты использовать для перетаскивания! Заранее благодарю! О_о
0
|
|
03.09.2010, 20:21 | |
Ответы с готовыми решениями:
61
Пятнашки Пятнашки))) игра Пятнашки Задание Пятнашки |
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
|
|
03.09.2010, 20:27 | 2 |
ну я бы использовал двумерный статический массив Timage и работал с драг н дроп, компонеты создавались бы программно - это всё по поводу того что надо, дальше можете уже конкретно спрашивать что из этого непонятно...
1
|
15 / 0 / 0
Регистрация: 16.09.2009
Сообщений: 32
|
|
03.09.2010, 20:35 [ТС] | 3 |
ничего не понял, но спасибо за ответ! не умею работать с драг-н-дроп и как создать массив TImaga тоже не представляю
0
|
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
|
|
03.09.2010, 20:40 | 4 |
ну начинать надо не с этого...
знаете как объявить массив в классе вообще?
0
|
15 / 0 / 0
Регистрация: 16.09.2009
Сообщений: 32
|
|
03.09.2010, 20:44 [ТС] | 5 |
как объявить приблизительно знаю
0
|
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
|
|
03.09.2010, 20:48 | 6 |
значит так, у вас есть форма, и соответсвенно класс соответсвующей данной форме (он наследуется от класса формы), там есть три раздела где можно объявить переменные (есстествено они имеют различный уровень доступа), для нашего случая больше всего подходит private-раздел. Там вы обявляете массив !двумерный! а в качестве типа указываем TImage (хотя в будущем мы возможно опишем класс на основе TImag'a)
Справились, показывайте и перейдем к след пункту (собственно создание этих Timage's)
1
|
15 / 0 / 0
Регистрация: 16.09.2009
Сообщений: 32
|
||||||
03.09.2010, 20:54 [ТС] | 7 | |||||
0
|
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
|
||||||
03.09.2010, 21:03 | 8 | |||||
и вот еще что в uses формы надо добавить ExtCtrls
Добавлено через 35 секунд правильно, только var тут не нужно Добавлено через 7 минут дальше, есть форма у неё есть событие OnCreate, вот мы залазим в его обработчик (Object inspecor - > events - > двойной клик на OnCreate). У нас появилась заготовка процедуры, поскольку у нас массив - объявляем 2 переменный (допустим i и j) типа байт (byte) больше на не нужно. В самой процедуре строим вложенные циклы (один для i другой для j), значения вставьте в соответствии с размерность массива. Теперь сама суть - внутри мы будем перебирать все элементы массива, создавать их и настраивать, выглядит это примерно так:
0
|
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
03.09.2010, 21:23 | 9 |
Vas-e-na, Я насчет двухмерного не уверен, нигде не написано это. Может типа слово составлять?
Добавлено через 2 минуты Да и Image можно любым компонентом с Caption или text заменить, а то еще буквы рисовать...
1
|
15 / 0 / 0
Регистрация: 16.09.2009
Сообщений: 32
|
|
03.09.2010, 21:25 [ТС] | 10 |
тупо на кнопках можно сделать???
0
|
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
03.09.2010, 21:26 | 11 |
Да хоть Эдиты или панели, без разницы.
1
|
15 / 0 / 0
Регистрация: 16.09.2009
Сообщений: 32
|
|
03.09.2010, 21:29 [ТС] | 12 |
подскажите тогда как это сделать, плиз!
0
|
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
|
|
03.09.2010, 21:32 | 13 |
http://ru.wikipedia.org/wiki/Пятнашки
Добавлено через 1 минуту также, TImage меняете на TButton в том коде который писали и всё... (все что мы настраивали относится практически ко всем визуальным компонентам) Добавлено через 58 секунд ну как бы не суть просто если это будет картинка больше свободы для дизайнерских возможностей...
0
|
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
03.09.2010, 21:33 | 14 |
Vas-e-na, Так не написано что пятнашки, а типа, да и не похоже, нет свободного поля. Нужно у автора уточнить условие, поля в линию или по сетке расположены.
0
|
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
|
|
03.09.2010, 21:35 | 15 |
0
|
15 / 0 / 0
Регистрация: 16.09.2009
Сообщений: 32
|
|
03.09.2010, 21:39 [ТС] | 16 |
Составлять надо слова, а не цифры.... В общем задание такое: имеется 30 клеток на поле, 4 из них пустые, в остальных записаны буквы фамилии, имени и отчества... требуется автоматически отсортировать клетки по алфавиту! Со второй частью думаю сам справлюсь (или помогут), а вот с перетаскиванием и заменой соседних клеток ступор... хотелось бы чтобы был красивый эффект, наподобие как при перетаскивании вкладок в браузере Opera
Добавлено через 1 минуту поле 6x5, поэтому массив двумерный Добавлено через 1 минуту с названием темы тупанул, просто некогда было придумывать
0
|
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
|
|
03.09.2010, 21:43 | 17 |
AlexXXX12389, суть всё равно та же, и пока ты не проделаешь то что я тебе выше написал, перейти к пункту где будем реализовывать перетаскивание нельзя...
PS а красота как раз будет зависеть от того компонента котрый ты выберешь, я выбрал для тебя Timage в связи с тем что у него есть свойство прозрачности, за счет потоков и этого свойства можно сделать эффект как в опере...
0
|
15 / 0 / 0
Регистрация: 16.09.2009
Сообщений: 32
|
||||||
03.09.2010, 21:51 [ТС] | 18 | |||||
Vas-e-na, спасибо за разъяснение, понятно
0
|
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
|
||||||||||||||||
03.09.2010, 22:15 | 19 | |||||||||||||||
ну замечательно, если там понадобится еще что настроить всё это делается здесь (я бы как культырный программист предложил бы еще на событие форму Dectroy удалить все созданные нами компоненты, но в принципе это не нужно). Теперь нам нужно описать две процедуры, чтобы создать для них заготовки (и не морочится какие должны быть списки параметров), предлагаю !временно! на форму поместить компонент(такой же как в массиве), и в Object inspector в событиях создать заготовки для OnDragOver, OnDragDrop.
Добавлено через 3 минуты процедура в OnDragOver будет отвечать за то чтобы компоненты могли обмениватся данными, код примерно такой должен быть:
Добавлено через 7 минут процедура OnDragDrop как раз и будет производить обмен данными, т.е.
Добавлено через 5 минут AlexXXX12389, с вашим заданием мы справились, с визуальной анимацией разбиратся будем?
1
|
15 / 0 / 0
Регистрация: 16.09.2009
Сообщений: 32
|
|
03.09.2010, 22:20 [ТС] | 20 |
да, будем
0
|
03.09.2010, 22:20 | |
03.09.2010, 22:20 | |
Помогаю со студенческими работами здесь
20
Пятнашки с подсказкой
Пятнашки в картинках Пятнашки на делфи Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |