|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.09.2015, 14:35 | #11 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Ну, можно через структуры. Можно и через классы. Смотря, чего Вы хотите добиться. Я, вот сделал-бы класс. Там, хотя-б ы можно рализацию скрытую сделать. Но, в любом случае, Вам решать. Юзики в экзешнике всё равно копаться не будут. Работает и ладушки.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
19.09.2015, 21:29 | #12 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,357
|
Давайте сначала узнаем какой язык...
|
19.09.2015, 21:45 | #13 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
11.12.2015, 01:27 | #14 |
PHP, Delphi
Форумчанин
Регистрация: 07.05.2008
Сообщений: 388
|
Сделайте несколько массивов. Один - база - у Вас уже есть. Теперь сделайте инвентарь скажем на 20 предметов. И в цикле каждому элементу присвойте предмет "нет предмета", то есть просто пусто. Когда покупаете или находите предмет просто копируете (присваиваете) его из базы в инвентарь. Аналогично для торговцев. Аналогично для куклы персонажа, чтобы одевать предмет.
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты |
14.12.2015, 06:34 | #15 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,889
|
apromix, не очень грамотный подход, имхо, и вот почему - при переносе вещей из инвентаря в сундук (это для примера, а суть будет для любых движений объектов та же самая) получится необходимо копировать вещи как записи туда сюда, по факту создавая разные экземпляры одной и той же вещи в разных местах, потом удалять из источника и прочий оверхед. Особенно больно будет, когда к вещи добавится характеристика и копирование придётся модифицировать по всем местам в коде (где-то можно, конечно, поработать через память, для унификации, но это не всегда спасёт, например со строками, с которыми потом может получиться множественная финализация), либо писать набор функций копирования, учитывающий специфики разных "инвентарей"-хранилищ.
Весело также будет при вводе понятий характеристики конкретной вещи (экземпляра), которых нет в характеристиках базовой вещи, например, прочность, суффиксы, сокеты и вставки, заряды(чарджи), "патроны", чанты, гравировки, крафты - их обработка должна быть выстроена в отдельной логической манере. Об этом и спрашивает автор. Отсюда выходит простой принцип - базовая вещь и конкретная вещь - разные системы, и писать одну через другую не стоит (не в смысле что они не связаны, а в смысле, что одно - не подмножество другого, между ними скорее понятие агрегации), а лучше писать работу с базовыми вещами в одном месте - это будет некое хранилище эталонов, а работу с конкретными вещами отдельно, каждая вещь лежит (и управляется) в одном экземпляре в некоей коллекции, а в игровых инвентарях на неё ссылка, и эта ссылка просто гуляет туда сюда, из инвентаря персонажа в инвентарь торговца при продаже. Однако, это довольно сложный вариант, если игра принципиально не имеет (и не будет иметь) концепции рпг-стайл вещей, а скорее концепция вещи как набора фиксированных бонусов(герои3) и наличие нескольких идентичных экземпляров в игре - норма, то вариант с хранением просто индекса вещи из базы имеет место быть. Для простейшего варианта, когда концепция вещей не будет меняться (при спроектированном и документированном дизайне, например), вариант с массивами и копированием также допустим, если программисту несложно прописать копирование в нескольких нужных местах. Последний раз редактировалось phomm; 14.12.2015 в 06:38. |
14.12.2015, 08:16 | #16 |
Пользователь
Регистрация: 03.08.2012
Сообщений: 38
|
Предложение: если этого ещё нет, добавить в Predmets[] свойство, характеризующее на какую часть тела данный предмет одевается. Например: 0-голова (головной убор), 1-голова (корона, подшлемник), 2-Голова(для морды лица: маска, очки), 3-шея, 4-грудь, 5-спина (для плаща) и т.д. Здесь желательно определиться, будут ли рюкзаки, сумки, кошели привязываться к какой либо части тела. Будет проще с куклой. Про голову можно так не заморачиваться, если предполагается одевание на нее одной только вещи, но если думать о перспективе развития ...
Необходимо сразу определиться с вопросами: 1. Предполагается ли ремонт вещей? 2. Сдавать вещь торговцу только отремонтированную или можно изношенную? Согласен с apromix'ом насчет массивов. Должен быть базовый массив вещей (эталонный) и те, что попадут в save: массивы торговцев (содержащие ограниченные перечни дескрипторов из базового массива) и для тех вещей, которые у игрока. Понятно, что у предметов игрока со своими уникальными дескрипторами должна быть ссылка на дескриптор базовой вещи (для оценки процента износа её и, соответственно, цены сдачи торговцу или до какой величины восстанавливать её состояние при ремонте, если он предполагается). А после продаже торговцу конкретная вещь возвращает свой базовый дескриптор. Но тут возникает вопрос по сокетам, как предупреждал тов. phomm. Дефолтное обнуление сокетов при возврате к торговцу? |
15.12.2015, 14:38 | #17 | ||
Дивиджей
Пользователь
Регистрация: 05.01.2009
Сообщений: 84
|
apromix, у меня по началу так реализовано как Вы написали.
Есть рынок, там я покупаю вещи, если ячейка рюкзака пуста то он добавляется туда. При создании формы создаются все предметы вещей в массиве, которые будут использоваться в игре. Код:
При покупке вещи на рынке пишу следующий код: Код:
Но проблема состоит в том, если я покупаю вещь допустим (Кожаный шлем) она у меня идет из базы текстур под номером 1. И есть состояние как для неё так и для всех остальных вещей. Но если я куплю две одинаковые вещь этот же самый (Кожаный шлем), то при проигрыше в бою состояние уменьшится у двоих этих же вещей. Так как писал Croessmah Цитата:
Цитирую Цитата:
Впишите в google:
DVJ Serg-Grin И вы услышите мои песни |
||
15.12.2015, 20:02 | #18 |
PHP, Delphi
Форумчанин
Регистрация: 07.05.2008
Сообщений: 388
|
Если нужна прочность у предметов, то алгоритм модифицируется элементарно просто: добавляется 1 свойство durability, и при присваивании из базы в эту переменную заносится число из maxdurability записи предмета из базы (ну или там число немного меньшее maxdurability, если предмет не покупается у торговца, а, скажем, его нашли и он немного поврежден).
Я наведу примерный код: Код:
Код:
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты |
15.12.2015, 20:11 | #19 |
Дивиджей
Пользователь
Регистрация: 05.01.2009
Сообщений: 84
|
apromix, спасибо Вам большое. Теперь мне всё стало ясно) +
Впишите в google:
DVJ Serg-Grin И вы услышите мои песни |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подсчет числа предметов в расписании уроков | Polly_Panika | Microsoft Office Access | 5 | 27.03.2014 10:14 |
Сортировка предметов (Delphi) | grongost | Помощь студентам | 1 | 07.09.2011 23:57 |
Разделение предметов по весу | niki123 | Общие вопросы C/C++ | 13 | 04.04.2011 12:13 |
Структура данных для хранения предметов | L_M | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 5 | 15.11.2010 21:08 |
Задача на С++. формирование выбора предметов | Veina | Помощь студентам | 9 | 23.12.2009 00:39 |