Да, парсерную составляющую там еще пилить и пилить ))
Эта игрушка хороший полигон для наполнения и обкатки стандартной библиотеки.
Альфа
Сообщений 61 страница 90 из 144
Поделиться612013-10-11 11:38:22
Поделиться622013-12-22 14:21:28
Эта версия не содержит ничего качественно нового, все изменения количественные - больше слов в словаре, больше поддерживаемых библиотекой действий, много исправленных ошибок в движке. Сделал релиз просто потому что давно уже ничего не выкладывал.
Из нового - консольный интерфейс (довольно сырой и требует тестирования).
Приложенная демо-игра - это тоже скорее полигон для обкатки платформы, нежели игра.
Список действий, доступных в этой версии:
- осмотри
- осмотрись
- потрогай
- нажми
- иди
- возьми
- выбрось
- поднимись
- спустись
Для всех действий, кроме "иди", прописано много синонимов, пробуйте =)
Действия
- открой
- закрой
нужны в игре, но они не включены в библиотеку (не доделаны), поэтому прописаны в коде самой игры.
Поделиться632014-01-03 22:25:46
Исправления и дополнения.
Из нового - чтение файлов в кодировке UTF-8 и UTF-16.
Поделиться642014-01-14 19:26:31
//========================================================================================== // строим сцену из локаций и объектов subspace демо //==========================================================================================
subspace - что ещё за подпространство?
class @контейнер{is @материальное
Что значат собачки перед именами классов?
Отредактировано Alexandr (2014-01-14 19:30:48)
Поделиться652014-01-14 21:30:43
subspace - что ещё за подпространство?
2. Локация должна иметь координаты вида Х.Y.Z + именованное подпространство
Следствия:
а) образуется обычное трёхмерное пространство;
б) можно легко определить что находится на западе или сверху от текущей локации.
Использование подпространств:
подпространства можно использовать для различных целей
- изменение масштаба (улицы в городе в одном пространстве, комнаты в домах в другом более мелком подпространстве);
- служебные пространства (например герой может блуждать в собственных мыслях).
Это как раз то именованное подпространство. Все локации, объявленные после "subspace демо" попадают в подпространство "демо".
А локации объявленные без подпространства считаются системными и к ним не применяются проверки перемещений.
Что значат собачки перед именами классов?
хм... это новые категории я знаю, тебе нравится это слово
По сути это те-же классы но лишенные классового имени. Объект, унаследованный от класса "@контейнер" нельзя будет назвать словом "контейнер". Это позволяет создавать абстрактные классы высокого уровня обобщения, не ломая голову над тем как их назвать. При это "контейнер" и "@контейнер" - это разные классы, они друг-другу не мешают.
Поделиться662014-01-24 10:33:34
Новое в версии 2.а.3.16
Изменения в описании аргументов функций
Аргументы описываются внутри круглых скобок сразу после имени функции: fn_type ( arg_list ) { fn_body }
arg_list имеет следующий формат: arg_type [arg_name] [#arg_key] [, arg_type [arg_name] [#arg_key]] ...
Аргументы в списке разделяются запятой или точкой с запятой.
Описание аргумента состоит из типа, имени и ключа, обязательным является только тип, остальные элементы могут быть опущены.
arg_type
Тип влияет на подбор значений на роль аргумента функции. В качестве типа может быть указано одно из следующего:
- Тип значения: bool, string, number, course, spcvalue, object, attribute, class, location, word, preposition, and-list, or-list.
- Класс значения. Пример: "предмет", "существо" и т.п.
- Произвольный литерал - должен в точности совпасть со словом, введенным игроком. Пример: "трах-тибидох"
arg_name
Имя переменной, которой будет передано значение аргумента в контексте выполнения функции.
Если имя переменной не указано, значение в функцию не передаётся, но по прежнему влияет на подбор функций.
arg_key
Ключ, которому должно соответствовать значение аргумента.
Пример: #ВпЕч - значение должно находиться в винительном падеже единственного числа.
В состав ключа могут входить шаблоны '!' и '*'.
* - подходит любое свойство ключа;
! - в ключе не должно быть указанного свойства.
Пример: #*п!е - у значения должен быть любой падеж, и не должно быть отрицания.
Если ключ не указан, проверка значения на соответствие ключу не проводится.
В сравнении с предыдущей версией:
- ключ обозначается знаком '#'
- ключ может стоять сразу после типа, минуя имя аргумента.
(и вот теперь можно массово вводить новые действия в библиотеку, формат функций больше меняться не будет).
Поделиться672014-01-24 15:56:58
И где, собственно, скачать можно?
! - в ключе не должно быть указанного свойства.
Пример: #*п!е - у значения должен быть любой падеж, и не должно быть отрицания.
Почему нельзя отрицать отдельные значения ключей? Например, нам не нужен только винительный падеж: !Вп, или не нужно множественное число: !Мч.
Поделиться682014-01-24 16:43:52
И где, собственно, скачать можно?
Это анонс =)
Почему нельзя отрицать отдельные значения ключей? Например, нам не нужен только винительный падеж: !Вп, или не нужно множественное число: !Мч.
Невозможно всё предусмотреть в описании аргументов, для более хитрых случаев есть секция ==parsing==
action(test, предмет Обж) { ==parsing== fail, if Обж.key = #Вп fail, if Обж.key = #Мч ==execute== Ok }
Поделиться692014-01-25 12:55:16
Новое в версии 2.а.3.16
part (часть)
Объектам добавлен еще один встроенный список - part (часть).
Всего теперь 3 списка:
- inside (внутри) - объекты находятся внутри и не недоступны снаружи, если содержащий объект закрыт и непрозрачен;
- outside (снаружи) - объекты находятся на поверхности содержащего объекта и доступны;
- part (часть) - объекты являются частью содержащего объекта и прикреплены к нему.
(для сравнения в первом ТОМе был всего 1 список на все случаи жизни - item)
Синтаксис такой-же как у 2-х предыдущих списков:
Б часть А // объект Б становится частью А Б часть А? // =да если Б является частью А А.часть // возвращает список всех частей объекта А
Примеры:
Рубашка внутри сундука //лежит в сундуке
Замок снаружи сундука //висит на сундуке
Крышка часть сундука //является частью сундука
В частности, новый список необходим для описания объектов по их принадлежности - "крышка сундука", "пистолет пирата".
Для одушевленных существ отношение владения распространяется на все 3 списка, всё что на вас, внутри ваших карманов и все части тела принадлежат вам.
Для неодушевлённых предметов владение распространяется только на их части.
Поделиться702014-02-02 18:11:54
версия 2.a.3.16 альфа.
Основные новшества описаны выше.
Кроме того много исправлений, и возможно добавлены новые ошибки.
Поделиться712014-02-06 10:55:35
Новое в версии 2.а.3.17
Морфологические формы теперь могут крепиться не только к словам, но и к любым именованным значениям, кроме предлога.
Это в частности нужно для таких нестандартных падежей как Лп, Ап, Бп, Сп, которые отсутствуют в большинстве слов.
Пример:
location в_башне { form Лп = "в башне" form Ап = "в башню" form Бп = "из башни" form Сп = "через башню" var башня = в_башне //локальный синоним var title = word башня }
Таким образом для значения "в_башне" мы достигаем возможность использования полного спектра всех падежей.
Поделиться722014-09-25 16:55:49
версия 2.a.4.0 альфа.
Рефакторинг завершен. УРА!
К движку прикручен новый (хорошо забытый старый от v.0.9.4.12) интерпретатор.
Внешних изменений в работе и в демо-игре нет, вполне возможно что даже что-то отвалилось, а я и не заметил.
Немного изменился синтаксис языка. Но так как язык еще нигде не описан, эти изменения заметят только 2 человека.
смотрите в коде демоигры:
- разметка секций
- описание объектов
- методы/секции объектов
- назначение признаков
- расположение внутри/снаружи/как часть
- описание форм слов
- словоформы в объектах
Очень надеюсь что дальнейшее развитие движка будет идти легче, так как теперь интерпретатор кода почти никак не связан с парсером ЕЯ.
Поделиться732014-09-25 17:44:20
Какие странные комментарии. Начинаются на звёздочки, заканчиваются на тирэшки...
Кстати, мучал меня один вопрос. Что произойдёт в этом случае:
class класс1 { var переменная = да, "переменная"; } class класс2 { var переменная = нет, "поле"; } object коллапс { это класс1 это класс2 %Что же это? {переменная} }
Теперь я знаю ответ на этот вопрос (да, сам проверил ). В данном случае будет значение из первого класса (да, "переменная"). Порядок объявления классов в объекте не имеет значения. Имеет значение именно объявление самих классов в коде. Что несколько странно. Мне казалось приоритет должен браться именно по объявлению имён классов в объекте.
Отредактировано Alexandr (2014-09-25 17:45:00)
Поделиться742014-09-26 11:02:54
Теперь я знаю ответ на этот вопрос (да, сам проверил ).
Вообще, это считается ошибкой.
Ответ будет зависеть от распределения памяти и может быть совершенно случайным.
(в версии 2.a.4.0 параноидальный режим не работает )
Поделиться752014-09-29 19:48:29
В версии 2.a.4.1 добавляется новый тип объектов - act.
Этот тип является описателем действия и предназначен заменить глаголы в функциях-действиях.
Act может наследоваться от классов и от других объектов с типом act. Может содержать собственные свойства и методы.
Основная цель нового объекта - сделать функции еще более гибкими и универсальными и сократить объёмы кода стандартной библиотеки.
Поделиться762014-09-30 10:11:48
Ох как всё усложняется... даже не знаю как с этим сейчас разбираться.
Поделиться772014-10-05 11:44:08
В версии 2.a.4.1 добавляется новое специальное свойство объектов - synonym.
Свойство предназначено (как можно догадаться) для добавления синонимов к объектам.
location торговая_площадь { synonym = рынок synonym = базар synonym = ярмарка }
Обращение к объекту по синониму возможно только в командах на ЕЯ, в коде синонимы игнорируются.
Поделиться782014-10-16 13:18:40
Всё же пришлось разделить свойства и переменные.
Переменные необходимо чистить, иначе накапливается много мусора. Свойства же никогда не удаляются.
Новое ключевое слово: property, свойство, prp.
Синтаксис как у переменной.
Да! глобальные переменные тоже необходимо объявлять как свойства, иначе могут пропасть.
Поделиться792014-10-17 22:20:19
Похоже, у меня всё-же получилось сделать описание действий настолько гибким, как я и хотел с самого начала.
Конечно, есть еще косяки и баги, но глобальный способ написания ст.библиотеки видимо меняться больше не будет. Дальше только наращивание объёма.
Ждём релиза =)
Поделиться802014-10-18 09:15:59
Очень хорошо. Лишь бы потом другие люди смогли понять эту гибкость и навороченность.
Поделиться812014-10-18 14:31:12
Да там всё логично и системно организовано (на мой взгляд).
И другие люди смогут пользоваться стандартными действиями (я надеюсь) не особо вникая в то как это работает.
Поделиться822014-10-20 11:52:49
версия 2.a.4.1 альфа.
- добавлен новый тип объектов act для описания действий;
- добавлен новый способ описания синонимов;
- добавлено ключевое слово "property" для описания свойств объектов;
- стандартная библиотека переработана с учетом использования новых возможностей act и synonym.
В ст.библиотеке нет ни одного действия, которое не будет дорабатываться в дальнейшем, но тем не менее текущий способ описания действий близок к конечному, как никогда ранее.
Поделиться832014-10-22 17:57:38
- добавлено ключевое слово "property" для описания свойств объектов;
Поделиться842014-10-22 18:03:33
Хм..., а в чем проблема?
Те же variable, вид с боку.
Поделиться852014-10-22 21:19:18
Просто всё время понятия меняются. Ладно, property будут в свойствах (что и должно быть изначально), а var вообще не будет на вкладках в редакторе. Пусть пользователь непосредственно в коде секции или в конструкторе объявляет и пользует.
Поделиться862014-10-22 23:07:57
Просто всё время понятия меняются.
А как же без этого?
Если бы изначально знал как должно быть, уже давно бы сразу всё сделал...
Поделиться872014-12-26 16:16:25
версия 2.a.4.2 альфа.
- доработка движка, заделаны дыры, оставшиеся после рефакторинга, почищены баги;
- доработка ст.библиотеки, переработаны некоторые действия, добавлено несколько новых;
-------------
SQL база была переделана для генерации документации по действиям. Осталось написать сам генератор =)
Поделиться882015-03-05 18:13:33
версия 2.a.4.2 альфа (веб-интерфейс).
Разработан полнофункциональный веб-интерфейс, призванный заменить предыдущий графический.
Тестировался на браузерах ИЕ8 и Хром 40.0.2214.115 m. Как будет вести себя на других браузерах даже не представляю...
Для запуска используем ярлык "Demo", или запускаем "webtom.exe" и вводим команду: run demo.
Сам движок от предыдущей версии.
Поделиться892015-03-05 21:23:24
Firefox 36.0 - работает.
Только когда появляется надпись press any key... на нажатия клавиш не реагирует. Реагирует только на клик мыши в область текста.
Теперь остаётся оформить это в многопользовательский сервер, чтобы можно было где-нить запустить и несколько пользователей независимо по адресу в браузере могли играть.
Но думаю, это не так просто как кажется.
Отредактировано Alexandr (2015-03-05 21:25:21)
Поделиться902015-03-06 09:55:13
когда появляется надпись press any key... на нажатия клавиш не реагирует. Реагирует только на клик мыши в область текста.
Чтож, будем считать это допустимыми потерями.
Теперь остаётся оформить это в многопользовательский сервер, чтобы можно было где-нить запустить и несколько пользователей независимо по адресу в браузере могли играть.
Это тогда лучше сделать как модуль к апачу, наверное. Но и в этом случае большая часть наработок пригодится.