Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создаю инвентарь. Нужна помощь с размещением [D7]


Страницы:   1 2

Enge1 ©   (2008-07-06 10:30:00) 

Ситуация такая.
Есть инвентарь. Когда получаю предмет нужно, чтобы в инвентаре он располагался в последнем пустом слоте. Слоты у меня это панели (panel1, panel2 и т.д) На панели также отображается количество данного предмета, когда он кончается, нужно, чтобы остальные, следующие за текущим слотом сдвигались на его место.
Полагаю тут нужно всего лишь изменять left и top значения объекта panel, но сортировать их нужно как-то через массив. Помогите, чем сможете


Рамиль   (2008-07-07 10:16:00) [1]

Это последнее, что надо было решить?:)


Enge1   (2008-07-06 19:54:00) [2]

Тын-Дын, превосходно. Спасибо ещё раз огромное.
Без решения этой проблемы весь проект на месте стоял.
Всем спасибо за помощь


Тын-Дын   (2008-07-06 19:32:00) [3]


> Enge1

Вот грубый пример:
http://89.223.39.99/files/slots.zip


Kostafey   (2008-07-06 19:28:00) [4]

> [24] Enge1   (06.07.08 18:24)
> Ну сложно, не сложно, а у меня самого ничего не получается.

Давай последовательно.
C record-ом определился?
Демонстрируй.


> [25] sniknik ©   (06.07.08 19:02)

В данном случае скорее из файла (ибо LoadSavedGame :))
Хотя я рекордсет без СУБД не делал...


sniknik   (2008-07-06 19:02:00) [5]

> А сам набор данных как формировать в этом случае?
откуда знать как в этом случае? а вообще способов дофига, прочитать из файла, получить по сети/почте, через провайдера, составить на месте... х.з. еще, что придумать, было бы проще если знать откуда он эти данные получает, и именно оттуда и формировать набор.


Enge1   (2008-07-06 18:24:00) [6]

Ну сложно, не сложно, а у меня самого ничего не получается.


Kostafey   (2008-07-06 18:18:00) [7]

> [22] sniknik ©   (06.07.08 17:12)
> > Он же не с БД работает.
> это неважно, и для неработающих с БД приложений также приемлемо,
> и удобно хранение/обработка однотипных и повторяющихся
> данных в структурах для них предназначенных - рекордсетах
> (переводится кстати как - "набор данных/записей"... ???)
> .

Подождите - подождите. А сам набор данных как формировать в этом случае?


> хотя... картинка желаемого не похожа на описание... для
> такого лучше наверное TListView подойдет, с CustomDraw.
> или делать чтото на основе TScrollBox. всетаки не очень
> понятно, что там на картинке делается.

Можно проще. Создавать и удалять панельки.
Алгоритм определения местонахождения новой панельки
несложно подобрать.


sniknik   (2008-07-06 17:12:00) [8]

> Он же не с БД работает.
это неважно, и для неработающих с БД приложений также приемлемо, и удобно хранение/обработка однотипных и повторяющихся данных в структурах для них предназначенных - рекордсетах (переводится кстати как - "набор данных/записей"... ???).

хотя... картинка желаемого не похожа на описание... для такого лучше наверное TListView подойдет, с CustomDraw. или делать чтото на основе TScrollBox. всетаки не очень понятно, что там на картинке делается.


MsGuns   (2008-07-06 16:48:00) [9]

>Enge1   (06.07.08 16:24) [15]
>Мм... не знаю, что такое моветон, но я делаю не "деловое ПО", а рпг-игру.

Ясно. Если б в начале написал, ЧТО делаешь, не было бы и критики


Kostafey   (2008-07-06 16:36:00) [10]

Можно так.
Придумываем некоторое правило, определяющее положение
n-го элемента инвентаря.
там что-нибудь навроде, (псевдокод)
x := (n mod c)*a
y := Round(n/c)*b

где a и b - размеры панельки,
с - количество панелек в линии.

Координаты нового элемента массива определяюся по новым правилам.
Элемент в массиве (не последний) удален - вызываем процедурку,
которая сместит хвостовые элементы массива на 1 влево.
:)


Enge1   (2008-07-06 16:32:00) [11]

Спасибо большое. Знаю, что мне ещё многому нужно научиться, но я заодно и учусь делая этот проект. Он будет полезен мне в будещем.


Тын-Дын   (2008-07-06 16:30:00) [12]


> Enge1   (06.07.08 16:28) [17]


Мда.
Тогда у тебя ещё много проблем впереди.
Готовый пример я тебе сделаю. Но уж выберу сам контейнер для хранения.


Enge1   (2008-07-06 16:28:00) [13]

Эм, это относилось к MsGuns...
Тын-Дын, нет, не пробовал. Я даже никак не отрисовывал графику. Я думал использовать примитивные visible параметры, и изменять координаты понелей и всё...


Тын-Дын   (2008-07-06 16:25:00) [14]

Для того, чтобы дать пример, тебе нужно сделать осознанный выбор инструментов.


Enge1   (2008-07-06 16:24:00) [15]

Мм... не знаю, что такое моветон, но я делаю не "деловое ПО", а рпг-игру.
Вместо критики, лучше бы написали дельное что-нибудь


Тын-Дын   (2008-07-06 16:24:00) [16]


> Enge1   (06.07.08 16:00) [11]


Ты уже пробовал использовать OnPaint для TPanel?
Осознанно используешь панели? Попробуй после отрисовки на панелях свернуть форму и развернуть. Всё ли в порядке после этого?

Как ты отрисовываешь графику?

Выбор TPanel на самом деле не слишком хорош для твоей задачи.
Можно использовать PaintBox.


Kostafey   (2008-07-06 16:24:00) [17]

> [7] sniknik ©   (06.07.08 15:15)
> > А через что предлагаете тогда делать?
> TDBCtrlGrid если правильно понял попытку описания в [0]

Он же не с БД работает.


> [4] Enge1   (06.07.08 14:34)
> А через что предлагаете тогда делать? Просто на этих панелях
> размещены рисунки и лэйблы. Мне так удобнее ими управлять.
>
> Kostafey, можно поподробнее?

Так в > [6] Тын-Дын ©   (06.07.08 14:41)
уже все написано.


> [9] Enge1   (06.07.08 15:25)

А в чем сложность?
Описать поля record или сортировка массива?


> [10] Тын-Дын ©   (06.07.08 15:38)
> > Enge1   (06.07.08 15:25) [9]
> Что в топике означает "Сортировать"?

Похоже о сортировке речи не идет.
Нужно просто смещать все панельки
если количество n-того типа нивентаря
стало равно 0.

Это имеется в виду под сортировкой?


MsGuns   (2008-07-06 16:10:00) [18]

> http://img391.imageshack.us/img391/8623/sdadik5.gif

Ужос !
Делать интерфейс для делового ПО в "игрушечном" столе - моветон


Enge1   (2008-07-06 16:00:00) [19]

Значит упорядочить так, как я писал выше:
Когда получаю предмет нужно, чтобы в инвентаре он располагался в последнем пустом слоте...
...На панели также отображается количество данного предмета, когда он кончается, нужно, чтобы остальные, следующие за текущим слотом сдвигались на его место.

p.s. чтобы проще было понять, вот как выглядит инвентарь у меня:
http://img391.imageshack.us/img391/8623/sdadik5.gif


Тын-Дын   (2008-07-06 15:38:00) [20]


> Enge1   (06.07.08 15:25) [9]


Что в топике означает "Сортировать"?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо