Вроде как получилось реализовать работу с массивами, пока предусмотрено только три вида массива: одномерный ("Список"), двумерный ("Таблица"), трёхмерный ("Кирпич", название рабочее, если кто придумает что-то подходящее — сообщите).
Неактивен
Olegus t.Gl. написал:
Вроде как получилось реализовать работу с массивами, пока предусмотрено только три вида массива: одномерный ("Список"), двумерный ("Таблица"), трёхмерный ("Кирпич", название рабочее, если кто придумает что-то подходящее — сообщите).
Если трехмерный - то "Куб". ИМХО, мненонически самое правильное название...
Неактивен
Nash написал:
Если трехмерный - то "Куб". ИМХО, мненонически самое правильное название...
Тогда уж параллелепипид, он, в отличие от куба, может иметь разную длину сторон
Хорошо звучит - параллелепипид данных. Только написать его правильно многим будет непросто
Неактивен
Olegus t.Gl. написал:
Будет компилятор для получения кода игры в определённом формате, и будет виртуальная машина (так это вроде называется) для проигрывания этого кода.
Все это, естественно, отсутсвует в RTADS и Русском Inform.
Честно скажу, я не ожидаю от "системы" многого. О сроках разработки я уж не говорю — _годы_ покажут.
Т.о. мое отношение к разработке (и трате на это сил) негативное.
Неактивен
GrAndrey
Тогда уж параллелепипид, он, в отличие от куба, может иметь разную длину сторон
Трехмерный массив с разной длиной сторон? А зачем он будет нужен в IF? (я вот даже сомневаюсь, будет ли вообще востребован трехмерный массив, но если автору не трудно его реализовать - пускай будет на всяк случай ).
А куб звучит попроще
Только написать его правильно многим будет непросто
Да ну, написать (объявить, я понимаю?) несложно. Это ж не динамические массивы...
Stas Starkov
Все это, естественно, отсутсвует в RTADS и Русском Inform.
??? А что тогда из себя представляет файл *.gam, например?
Честно скажу, я не ожидаю от "системы" многого. О сроках разработки я уж не говорю — _годы_ покажут.
Т.о. мое отношение к разработке (и трате на это сил) негативное.
А альтернатива?
Неактивен
Nash:
>>Да ну, написать (объявить, я понимаю?) несложно. Это
>>ж не динамические массивы...
Нет, правильно написать слово параллелепипид
Stas Starkov
Quote:Все это, естественно, отсутсвует в RTADS и Русском Inform.
>> ??? А что тогда из себя представляет файл *.gam,
>> например?
Памятка: сарказм - это не старческая болезнь, и не опухоль. Это такие реплики, которые будучи записанными на форуме, часто неправильно воспринимаются. Вспоинается давнишняя тема :
https://forum.ifiction.ru/viewtopic.php?pid=7289#p7289
Неактивен
Дважды неверно понять собеседника - это еще надо постараться
Да, "параллелепипед" - это очень сложное слово, а потому "куб". Спасение для развращенных мышкой пользователей.
Памятка: сарказм - это не старческая болезнь, и не опухоль
Ну хорошо. Вот покажете мне, как без лишней головной боли воплотить РЕАЛЬНУЮ многообъектность в RTADS, да еще чтоб отдельные экземпляры ОДНОГО объекта можно было перекидывать из контейнера в контейнер...придется согласиться, что разработка русской платформы никому не нужна.
Неактивен
Nash написал:
Ну хорошо. Вот покажете мне, как без лишней головной боли воплотить РЕАЛЬНУЮ многообъектность в RTADS, да еще чтоб отдельные экземпляры ОДНОГО объекта можно было перекидывать из контейнера в контейнер...придется согласиться, что разработка русской платформы никому не нужна.
Все это без проблем делается в Python/Hydra
Неактивен
Nash написал:
Ну хорошо. Вот покажете мне, как без лишней головной боли воплотить РЕАЛЬНУЮ многообъектность в RTADS, да еще чтоб отдельные экземпляры ОДНОГО объекта можно было перекидывать из контейнера в контейнер...придется согласиться, что разработка русской платформы никому не нужна.
И покажу:
myachik : item sdesc = "мячик" rdesc = "мячика" ddesc = "мячику" vdesc = "мячик" tdesc = "мячиком" pdesc = "мячике" adjective = 'небольшой' 'резиновый#t' 'небольшого' 'небольшому' 'небольшому#d' 'небольшим' 'небольшим#t' 'небольшом' 'резиновый' 'резиновый#t' 'резинового' 'резиновому' 'резиновому#d' 'резиновым' 'резиновым#t' 'резиновом' noun = 'мячик' 'мячика' 'мячику' 'мячиком' 'мячике' 'мячику#d' 'мячиком#t' ldesc = "Небольшой резиновый мячик." isHim = true ; /* Внутри какой-либо из процедур, создаем экземпляры объекта. В данном примере, внутри процедуры осмотра стартовой комнаты, если она произодится впервые */ startroom: room ldesc = { if (!startroom.issen) { local myachik1 = new myachik; myachik1.moveInto(startroom); /* Далее можно поменять его свйоства. Например, добавить новые имена, позволяющие различать созданные объекты */ } } ;
Для любого, кто хотя бы поверхностно ознакомился с языком RTADS, этот код будет довольно понятен. С динамически созданными объектами система будет обращаться совершенно так-же, как и зарнее созданными.
P.S. Мячик описан за 10 секунд при помощи все того-же легендарного "Генератора" ;D
Неактивен
Погодите, но вот же отрывок из мануала по RTADS:
Еще одной из вариаций на ту же тему является набор неотличимых друг от друга объектов. Например, мы хотим реализовать спичечный коробок, полный спичек. Игрок должен иметь возможность взять одну спичку из коробка, чтобы зажечь ее.
Однако, поскольку TADS требует индивидуального набора лексических свойств для каждого объекта, нам придется-таки наложить некоторые ограничения на действия игрока. В частности, в каждый конкретный момент времени игрок сможет держать в руках только одну спичку - все остальные спички должны оставаться в коробке.
А если у меня есть патронташ и я хочу брать произвольное кол-во патронов, чтобы зарядить их в мой боевой пистолет? Дальше в мануале идет страница исходного кода решения со спичками. И это если позволено брать только одну спичку из коробка. Мне придется городить вдвое больше?
ЗЫ. Не судите слишком строго, RTADS я знаю действительно поверхностно...
Неактивен
Nash написал:
Погодите, но вот же отрывок из мануала по RTADS:
А если у меня есть патронташ и я хочу брать произвольное кол-во патронов, чтобы зарядить их в мой боевой пистолет? Дальше в мануале идет страница исходного кода решения со спичками. И это если позволено брать только одну спичку из коробка. Мне придется городить вдвое больше?
ЗЫ. Не судите слишком строго, RTADS я знаю действительно поверхностно...
В TADS есть понятие неразличимых объектов (они имеют флаг isEquivalent и общий суперкласс). Только что динамически создал 25 патронов. Брать их получается только по одному. Буду писать анализ для числительных.
Неактивен
"Куб" так "куб". Трехмерный массив может пригодится для моделирования пространства.
Насчёт переменных: в моей платформе определения переменной с указанием типа будет не нужно (хотя нужна будет инициализация или типа того) — её тип будет определяться присвоенным значением. В выражениях будет происходить автоматическое приведение типов и т.п.
Все массивы будут динамическими. Можно, конечно, загнуть насчёт двумерных и трёхмерных массивов разной формы (треугольник, пирамида и т.п.), но немного подумав я это решил отложить.
P.S. Не думайте, что описанные фичи отняли бОльшую часть времени (на тему — ковыряясь в мелочах, забыл о главном)...
P.P.S. Различные примеры из других платформ весьма интересны и познавательны, однако не стоит превращать эту тему в FAQ по этим платформам. В то же время, я ни в коем случае не запрещаю некоторую отвлечённость в разговоре. Но придерживайтесь меры...
Неактивен
Насчёт переменных: в моей платформе определения переменной с указанием типа будет не нужно (хотя нужна будет инициализация или типа того) — её тип будет определяться присвоенным значением.
Да, с одной стороны - это есть правильно и проще. С другой - довольно сложно проследить, где же в первый раз была объявлена переменная И усложняется контроль над ошибками в компиляторе.
Но это все к спору между сторонниками паскаля и си.
А будут ли в платформе функции (именно функции, а не процедуры)? И еще - переменные будут делиться на локальные и глобальные (с учетом подключаемых библиотек)?
Неактивен
Поскольку переменная может менять тип при присвоении значения другого типа, то вопрос, где она была впервые объявлена не стоит так уж остро. Другое дело, что из-за подобного подхода ряд ошибок будет проявляться не на этапе компиляции, а на этапе выполнения кода, — это действительно проблема, но тут уж ничего не поделаешь.
Возможность создания своих процедур и функций будет (вот только стоит ли разделять эти понятия?..), будет также разделение переменных на глобальные и локальные, будет возможность подключения модулей, т.е. кусков кода (или откомпилированных модулей, что сделать реально, но нужно хорошенько продумать) из внешних файлов.
Неактивен
Nash написал:
Погодите, но вот же отрывок из мануала по RTADS:
А если у меня есть патронташ и я хочу брать произвольное кол-во патронов, чтобы зарядить их в мой боевой пистолет? Дальше в мануале идет страница исходного кода решения со спичками. И это если позволено брать только одну спичку из коробка. Мне придется городить вдвое больше?
(Так вот что ты имел в виду... Точнее надо формировать техническое задание. :-) )
То, чего ты хочешь, не реализовано ни в одной (насколько я знаю) системе IF кроме TADS3! Это просто объяснимо — это весьма сложно сделать и при этом сделать "правильно". Плюс к тому, необходимость в подобной функциональности возникает не часто и, как ты сам видел, это ограничения _можно_ обойти.
А можно узнать, имеется ли данная вещь хотя бы в списке желаемого в "IF платформе"? А в RTADS это _уже_ возможно, пусть и не без труда (чужого, кстати, — код-то уже написан добрыми иностранцами).
Неактивен
То, чего ты хочешь, не реализовано ни в одной (насколько я знаю) системе IF кроме TADS3!
А в RTADS это _уже_ возможно, пусть и не без труда (чужого, кстати, — код-то уже написан добрыми иностранцами).
Так "не реализовано" или "возможно"?
Плюс к тому, необходимость в подобной функциональности возникает не часто
А я вот хочу реализовать деньги, как монеты, а не "нечто виртуальное"...Да и вообще - если писать игру с ролевым уклоном, там большинство предметов попадает в категорию клонов, с которыми практически нереально работать, динамически генеря их во время игры...
Неактивен
Дело хоть и медленно, но продвигается. Пока всё на стадии проектирования с программными "набросками" реализации некоторых алгоритмов. Так, вроде удалось разобраться и спроектировать работу со свойствами и методами объектов платформы...
В настоящее время работаю над реализацией в платформе работы как с типизированными переменными, так и с переменными без типа.
Изрядное количество хлопот доставляет реализация операций присваивания и сравнения на равенство через один знак "=". Обозначать эти операции по-разному (как в C или Delphi/Pascal'е) на мой взгляд не очень разумно.
Неактивен
dennis написал:
Использование РАЗНЫХ символов для присваивания и сравнения в C/C++/Inform — отнюдь не роскошь. Это бинарные операции, могут использоваться в любых контекстах, и иначе различить их нельзя.
Ясное дело, что не роскошь. Говоря проще, в C/C++/PHP/т.п. различие в обозначении этих операций обусловлено в первую очередь тем, что в этих языках можно использовать операции и сравнения, и присвоения в рамках одного действия (или как это там называется).
Я при проектировании платформы от этого сознательно отказался.
Неактивен
Работа идёт, хотя лето, солнце и т.п. несколько снижают темп...
Неактивен
По поводу консоли в Win32:
В 98 окнах изменение шрифта консоли - только извне, ручками.
В Вин2000 и ВинХР - таких возможностей не предусмотрено вообще. На то она и консоль.
Жаль, что нельзя менять шрифт. Хотя и несколько странно...
Неактивен
Uten написал:
По поводу консоли в Win32:
В 98 окнах изменение шрифта консоли - только извне, ручками.
В Вин2000 и ВинХР - таких возможностей не предусмотрено вообще. На то она и консоль.
Как это нельзя? Свойства, шрифт. Правда только два (наверно, можно ещё установить), но размеры на любой вкус.
Неактивен
GrAndrey написал:
Как это нельзя? Свойства, шрифт. Правда только два (наверно, можно ещё установить), но размеры на любой вкус.
Да, сорри, с Вин2к/ХР я погорячился.
Но это ничего не меняет, поскольку шрифт является свойством самой консоли, а не консольного приложения.
Насколько я помню в том же ДОСе небыло возможности изменить шрифт (не начертание, а размер), да и начертание - только обходными методами, которые не применимы к винде по определению.
У меня была прога, заменяющая стандартный ДОСовский шрифт, со встроенным "графическим" редактором. Использовал для улучшения графики в "рогалике". К сожалению, забыл как называется, а найти у себя уже не могу. С ДОС-игрой под виндами будет работать, если запустить их в одной консоли (запустить по очереди через батник).
Неактивен