www.mudconnector.su https://forum.mudconnector.su/ |
|
Файлы классов для MUD World of russian fantasy https://forum.mudconnector.su/viewtopic.php?f=14&t=297 |
Страница 1 из 2 |
Автор: | Харч [ Ср июн 22, 2011 12:31 pm ] | ||
Заголовок сообщения: | Файлы классов для MUD World of russian fantasy | ||
Вот файлы классов, как и обещал. В архиве.
|
Автор: | KadVar [ Ср июн 22, 2011 1:05 pm ] |
Заголовок сообщения: | Re: Файлы классов для MUD World of russian fantasy |
Комментов, конечно не хватает остро. Краткий ревью, искал интересные идеи. Честно - не нашел , а хотелось. area.h map<int,ROOM> rooms; map<int,int> number_rooms; Ммм... это что такое ? И зачем их два ? Время восхода и заката по идее с временем года связаны. class CONTAINER int door; - это что ? class EXITS 6 выходов хорошо, но вообще-то их могло бы быть и 10... Пустые строки не вполне хорошие значения для значений по умолчанию. class INVENTAR - не понял назначения класса class MOB gold = 0; serebro = 0; - имеет ли смысл отличать одно от другого ? flags = ""; - string ???? sost = "normal"; - string ???? А где инициализация остального ? int number_in_area; int number_area; - не понял что это string name_1; string name_2; string name_3; string name_4; string name_5; string name_6; - это пардон гарантированный секас и мат... у падежей есть названия string name_room; - ? int where_sit; - я так понимаю место куда он вернется автоматом после каких-то событий ? каких ? string rasa; string clas; - string ????? string SK; string sost; - не смог понять что это map<int,string> opis; int size_opis; - и это и многое другое Дальше смотреть не стал. Возможно мое мнение не интересно, но я все-же его выскажу: структура классов требует серьезной переделки как минимум. OOP не видно совсем. Почему sosud не является потомком obj ? Кто является потомком хоть кого-либо ? |
Автор: | Харч [ Ср июн 22, 2011 1:21 pm ] |
Заголовок сообщения: | Re: Файлы классов для MUD World of russian fantasy |
rooms - массив комнат в арии numer_rooms - id комнат в арии Да, закат и восход пока не сделаны CONTAINER door - имеет ли объект "двери". 0 - не имеет 1 - имеет и она открыта 2 - закрыта 3 - заперта EXITS да, я понимаю, но изначально делал под 6 Все что я не инициализирую должно заполняться из арий, и инициализировать это просто нет смысла INVENTAR - инвентарь персонажа Хранит, кроме id вещей еще и вместительность, вес и так далее MOB да, потому что золото - типа долларов Серебро - типа рублей flags - флаги на мобе, пока никак не используется (у obj используется) sost - normal, sit, sleep - пока так, но будет изменено, потому как плохо сделано number_in_area - номер в арии (относительно арии!), в которой он описан number_area - номер арии, откуда он создан. То есть мобы могут выйти из любой арии в любую, а эти переменные помогают определить откуда он "родом". Ну имена - да, плохо name_room - long_name вообщем, как отображается в комнате where_sit - id объекта на котором персонаж сидит (глупо, понимаю, будет переделано). SK - не используется (тут в классах куча наработок) sost - normal, sit, sleep opis - описание, size_opis - количество строк в нем Мнение всегда интересно Да, я согласен с этим. Просто писать начинал в 9-м классе, когда о классах было весьма смутное представление. Переделке собираюсь подвергнуть ООП и нет, к сожалению Ну, SOSUD объявляется внутри OBJ, что плохо, потому что занимает место у не сосудов Наследование отсутствует. |
Автор: | KadVar [ Ср июн 22, 2011 2:39 pm ] |
Заголовок сообщения: | Re: Файлы классов для MUD World of russian fantasy |
ЗЫ. В качестве идей и кусочка того что делал сам. Давно. Не претендую на идеал. Самая простая иерархия (код синтетический, реальный весьма замусорен и будет непонятен, многое вычеркнуто) class cAM_Char_Object : public cAM_Alive_Object { public: password", store_dt_String loadroom", store_dt_Integer birthdatemud", store_dt_Integer );// BirthDate_MUD // Дата рождения по времени мада все начинают в 20 лет. timeplayed", store_dt_Integer ); // сколько тиков игрок играет createdRL", store_dt_Integer ); // Created: [Mon Nov 13], lastlogonRL", store_dt_Integer ); // Last Logon: [Wed Aug 10] max_level", store_dt_Integer ); //максимальный левел который когда либо был у игрока в данном реморте remorts", store_dt_Integer ); //количество ремортов trains", store_dt_Integer ); trains_spend", store_dt_Integer ); // Количество оставшихся тренировок (отдельно писать логи по получению-расходованию) hunger", store_dt_Integer ); thirst", store_dt_Integer ); drunk", store_dt_Integer ); death_cnt", store_dt_Integer ); death_pk_cnt", store_dt_Integer ); delevels_counter", store_dt_Integer ); coins", store_dt_Integer ); coins_bank", store_dt_Integer ); clan", store_dt_Integer ); clan_rank", store_dt_Integer ); } class cAM_Alive_Object : public cAM_Base_Object_With_Noun { "ligth_dark", store_dt_Integer ); // Светлый или темный персонаж "race", store_dt_Integer ); // Раса персонажа "class", store_dt_Integer ); // Профессия персонажа "homeland", store_dt_Integer ); // Хоумленд персонажа "long_desc", store_dt_String ); "title_prefix", store_dt_String ); "title_postfix", store_dt_String ); "level", store_dt_Integer ); "current_lvl_exp", store_dt_Integer ); "def_position", store_dt_Integer ); // Default position: Стоит "original_move_type", store_dt_Integer ); // : 0(ушел) (аффекты наливаются сверху) "hp", store_dt_Integer ); "mana", store_dt_Integer ); "move", store_dt_Integer ); } // Промежуточный класс с существительным внутри class cAM_Base_Object_With_Noun : public cAM_Base_Object { string Name; string In_Ground_Description; Russian_Word_Combination* Names; }; class Russian_Word_Combination_Part - объект хранящий в себе название, выдает наружу все падежи, которые в разумных пределах автогенерируемы. Там внутри скрыта хренова туча кода, такие объекты как существительно-прилагательное итп. Мобы при этом являются разновидностью cAM_Alive_Object. Очень примитивно, просто чтобы пояснить мысль. |
Автор: | KadVar [ Ср июн 22, 2011 2:42 pm ] |
Заголовок сообщения: | Re: Файлы классов для MUD World of russian fantasy |
Харч писал(а): rooms - массив комнат в арии numer_rooms - id комнат в арии Зачем и то и другое одновременно ? Харч писал(а): CONTAINER door - имеет ли объект "двери". 0 - не имеет 1 - имеет и она открыта 2 - закрыта 3 - заперта Контейнер ? Двери ? Предполагается прятаться внутри запираемого лукошка ? Харч писал(а): EXITS да, я понимаю, но изначально делал под 6 И что делать если понадобится 10 ? А 20 ? Харч писал(а): Все что я не инициализирую должно заполняться из арий, и инициализировать это просто нет смысла Все, что есть ДОЛЖНО инициализироваться. Харч писал(а): number_area - номер арии, откуда он создан. То есть мобы могут выйти из любой арии в любую, а эти переменные помогают определить откуда он "родом". Тут верная идея. Только лучше сохранять birth_room, т.е. ссылку на него, или номер. Харч писал(а): Наследование отсутствует. Вас ждут недетские проблемы с отладкой копированного кода и модернизацией. |
Автор: | Харч [ Ср июн 22, 2011 3:37 pm ] |
Заголовок сообщения: | Re: Файлы классов для MUD World of russian fantasy |
спасибо, буду разбираться KadVar писал(а): Харч писал(а): rooms - массив комнат в арии numer_rooms - id комнат в арии Зачем и то и другое одновременно ? Для более легкого поиска То есть id необязательно идут подряд, а обращение к комнате: rooms[ID_ROOM].///// Я знаю что есть итераторы, но мне показалось так проще KadVar писал(а): Контейнер ? Двери ? Предполагается прятаться внутри запираемого лукошка ? Это просто называется "дверь", а на самом деле можно же открывать и закрывать шкаф, и так далее? Вот у них и есть "дверь", а фактически это заперт/незаперт и т. д. KadVar писал(а): И что делать если понадобится 10 ? А 20 ? Э... мне вроде не надо Цитата: Все, что есть ДОЛЖНО инициализироваться. Согласен, только мне морокой показалось в далеком 9-м KadVar писал(а): Тут верная идея. Только лучше сохранять birth_room, т.е. ссылку на него, или номер. Дело в том что у меня нет общего списка комнат как в ромовском движке. У меня есть список арий, а в каждой арии список комнат, и вот номера этих комнат могут пересекаться. Конечно можно хранить адрес комнаты в памяти, но... что делать при перезагрузке? обновлять? Морока. (я имею ввиду петов). Проблемы - наверное, но я собираюсь вообще полностью очистить файл команд и написать его заново так что проблем не будет, просто перепишу все |
Автор: | KadVar [ Ср июн 22, 2011 4:07 pm ] |
Заголовок сообщения: | Re: Файлы классов для MUD World of russian fantasy |
Харч писал(а): Для более легкого поиска То есть id необязательно идут подряд, а обращение к комнате: rooms[ID_ROOM].///// Я знаю что есть итераторы, но мне показалось так проще Очень не рекомендую так делать. И эээ.. Код: map<int,ROOM> rooms; map<int,int> number_rooms; Что мешает ID_ROOM использовать как ключ для map ? Или map не имеет функционала доступа по ключу (давно я на ++ не писал, может хешмап нужен?) ? Если не имеет - вы используете не тот список, что вам нужен. Харч писал(а): KadVar писал(а): Контейнер ? Двери ? Предполагается прятаться внутри запираемого лукошка ? Это просто называется "дверь", а на самом деле можно же открывать и закрывать шкаф, и так далее? Вот у них и есть "дверь", а фактически это заперт/незаперт и т. д. [/code] И зачем он называется "дверь" ? Почему не "заяц" ? Харч писал(а): KadVar писал(а): Тут верная идея. Только лучше сохранять birth_room, т.е. ссылку на него, или номер. Дело в том что у меня нет общего списка комнат как в ромовском движке. У меня есть список арий, а в каждой арии список комнат, и вот номера этих комнат могут пересекаться. Конечно можно хранить адрес комнаты в памяти, но... что делать при перезагрузке? обновлять? Морока. (я имею ввиду петов). [/quote] Не понял силы подхода и его преимущества... |
Автор: | Харч [ Ср июн 22, 2011 5:35 pm ] |
Заголовок сообщения: | Re: Файлы классов для MUD World of russian fantasy |
Цитата: Что мешает ID_ROOM использовать как ключ для map ? Или map не имеет функционала доступа по ключу (давно я на ++ не писал, может хешмап нужен?) ? Если не имеет - вы используете не тот список, что вам нужен. Гм... всмысле доступ по ключу? Может и имеет, а может я даже им пользуюсь, не зная названия KadVar писал(а): Не понял силы подхода и его преимущества... Какого именно подхода? Ну вот например, в ROM вроде имеются vnum, которые каждой арии выделяются вручную - надо думать и просчитывать, тогда как у меня просчет идет автоматически, я конечно понимаю что весь мир не представляется как огромный набор комнат, а разбивается на арии, но мне кажется так и поиск делать проще, и арию отдельную обрабатывать тоже намного проще. |
Автор: | KadVar [ Ср июн 22, 2011 5:50 pm ] |
Заголовок сообщения: | Re: Файлы классов для MUD World of russian fantasy |
Харч писал(а): Какого именно подхода? Ну вот например, в ROM вроде имеются vnum, которые каждой арии выделяются вручную - надо думать и просчитывать, тогда как у меня просчет идет автоматически, я конечно понимаю что весь мир не представляется как огромный набор комнат, а разбивается на арии, но мне кажется так и поиск делать проще, и арию отдельную обрабатывать тоже намного проще. Подход - Свалить всё в одну кучу. Что уж проще, для vnum комнаты 999888 - 999 номер зоны, 888 номер комнаты в нём. И как проще делать поиск, с 999000 по 999999 комнату или среди "всех". И как проще обрабатывать "арию" ? Чисто формально vnum-ы не особо нужны. Но на практике это большое подспорье именно в плане "отдельной обработки арии" |
Автор: | Харч [ Ср июн 22, 2011 7:43 pm ] |
Заголовок сообщения: | Re: Файлы классов для MUD World of russian fantasy |
KadVar писал(а): Харч писал(а): Какого именно подхода? Ну вот например, в ROM вроде имеются vnum, которые каждой арии выделяются вручную - надо думать и просчитывать, тогда как у меня просчет идет автоматически, я конечно понимаю что весь мир не представляется как огромный набор комнат, а разбивается на арии, но мне кажется так и поиск делать проще, и арию отдельную обрабатывать тоже намного проще. Подход - Свалить всё в одну кучу. Что уж проще, для vnum комнаты 999888 - 999 номер зоны, 888 номер комнаты в нём. И как проще делать поиск, с 999000 по 999999 комнату или среди "всех". И как проще обрабатывать "арию" ? Чисто формально vnum-ы не особо нужны. Но на практике это большое подспорье именно в плане "отдельной обработки арии" Да, но это все-таки уже путаница, думать, разделять на первые три цифры и последние, ИМХО так проще запутаться А я и не делаю поиск среди всех Я вообще даже поиска нигде практически не делаю (вот только для репопа), избавился от них именно введением таких дополнительных массивов. Если Вы подробнее скажете какой поиск имеете ввиду, для чего - скажу как он происходит. И кстати по времени доступа - к любому объекту мира она одинаковая в текущей системе Маленькая, как просто доступ к одному элементу массива. Ну, насчет арии - какое-то например арийное заклинание, ИМХО проще обращаться areas[ID_AREA].rooms[ID_ROOM].ЧТО_ТО, а не objects[VNUM] (и перед этим вычислять этот VNUM). |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |