noname написал:
извиняюсь, что я ещё на старой версии, но вот захотел проверить реакцию
на ввод одиночного слова
В новой версии на ввод любого неизвестного слова выдается "Мышонок не может это сделать!". Так как в игре заложен весьма ограниченный словарь, я не вижу возможности для любой произвольной строки провести анализ на бред/мат/команду/прочее, поэтому предполагается, что любая введенная строка - это команда к действию.
noname написал:
а вот на слово взять было бы неплохо выдать
какое-нить другое сообщение, типа:укажите, что Вы хотите взять. например:
взять яблоко
Для этого парсер должен иметь механизм подстановки умолчаний и механизм уточняющих вопросов. Например как здесь https://forum.ifiction.ru/viewtopic.php … 171#p13171
Когда нибудь дорастем и до этого...
Неактивен
Версия 0.2.3.2 альфа доступна для скачивания: http://ifwiki.ru/ТОМ
Неактивен
В версии v.0.2.3.2 альфа добавлены относительные свойства объектов и ключевые слова actor и act.
В демоигре восстановлена возможность игры любым персонажем.
Неактивен
Мне в вики было бы удобно.
Совсем не хочется тратить время на создание еще одного малопосещаемого ил-сайта.
Неактивен
ASBer написал:
Мне в вики было бы удобно.
Совсем не хочется тратить время на создание еще одного малопосещаемого ил-сайта.
Делай в вики. И, кстати, правильно, что ты их выделяешь в отдельный спейс.
Неактивен
случайно наткнулся на ошибку:
мама-мышь> взять горох
Мама-мышь взяла горох из мешка
В лесу страшно ухнул филин.
мама-мышь> брось
Мышь не может это сделать!
Брось отсутствует.
Дооооолго смеялсо
Отредактировано ASBer (03.10.2008 22:22)
Неактивен
Korwin написал:
А я тут уже вставил ТОМ в FAQ. Поторопился?
Нет, все идет по плану. Ошибки не критичные и легко правятся.
Я сейчас добавляю в игру бантики, функциональность под которые давно разработана, но не тестировалась из-за своей второстепенности. Вот жучки и повылазили.
Неактивен
Анонс версии 0.2.3.3.альфа
Доработки платформы:
- существенно доработан парсер;
- изменены управляющие теги;
- исправлена масса ошибок.
Доработки демоигры:
- добавлены новые объекты (ягоды и грядки во дворе)
- добавлены шаблоны для действий с объектами упомянутыми ранее:
мышонок> брось рогатку
Мышонок бросил рогатку на пол.
мышонок> подними
Мышонок взял рогатку с пола.
- добавлены действия с классовыми именами:
мышонок> позвать зверьков
- мама-мышь! - закричал мышонок.
- дядюшка-крот! - закричал мышонок.
- что тебе нужно, мышонок? - спросил дядюшка-крот.
- что тебе нужно, мышонок? - спросила мама-мышь.
- вероятно еще что-то… эээ не помню
Неактивен
Версия 0.2.3.3 альфа доступна для скачивания: http://ifwiki.ru/ТОМ
Неактивен
Анонс версии 0.2.4.0 альфа
+ команды save/сохранить и load/загрузить. Теперь можно сохранять игры.
+ исправлены найденные баги.
- команды undo/отменить в версии 1.0 не будет. Нормальная реализация undo требует глубокой переработки ядра платформы с введением некоторого подобия транзакций и их отката. Команда undo будет реализована в одной из следующих версий 1.х
Бета не за горами!
Неактивен
Новая версия 0.2.4.0 альфа доступна для скачивания: http://ifwiki.ru/ТОМ
Добавлены команды save/сохранить и load/загрузить. Теперь можно сохранять игры.
Также исправлены найденные ошибки.
Как дополнительный бонус, в демоигре добавилась возможность командовать другими персонажами, например: крот, возьми горох из мешка
Отредактировано ASBer (20.11.2008 09:48)
Неактивен
Вынес сюда, дабы не оффтопить.
1. Все проверки объектов выполняются в объекте действия (глагол в терминах рТАДСа)
Объекты, не подходящие действию, дальше не проходят.
2. У персонажа вызывается метод, одноименный с действием.
switch по действию таким образом исключается.
Если необходимый метод у персонажа отсутствует - выводится стандартное сообщение.
3. При необходимости никто не запрещает из метода персонажа вызвать метод объекта.
switch по объекту таким образом исключается.
1. Что имеется в виду?
2. Это просто другая запись switch, а стандартное сообщение – это ветка default.
3. Не понял. Если, например, берётся бомба, в результате чего она детонирует. Какой метод вызвать у объекта, если в методе взять мы ещё не узнали, что это бомба?
Отредактировано Gesperid (15.12.2008 15:57)
Неактивен
Gesperid написал:
1. Все проверки объектов выполняются в объекте действия (глагол в терминах рТАДСа)
Объекты, не подходящие действию, дальше не проходят.
2. У персонажа вызывается метод, одноименный с действием.
switch по действию таким образом исключается.
Если необходимый метод у персонажа отсутствует - выводится стандартное сообщение.
3. При необходимости никто не запрещает из метода персонажа вызвать метод объекта.
switch по объекту таким образом исключается.1. Что имеется в виду?
2. Это просто другая запись switch, а стандартное сообщение – это ветка default.
3. Не понял. Если, например, берётся бомба, в результате чего она детонирует. Какой метод вызвать у объекта, если в методе взять мы ещё не узнали, что это бомба?
1. для примера возьмем действие "взять"
unique бомба.cls = предмет .Вес = 50 .lex = "бомб%;..;..;..Вп=у;" //лексема для парсера action взять //объект категории действие (отдаленный аналог verb в TADS) .pat = "взять=возьми @Obj:предмет*Вп" //шаблон команды для парсера .Obj(Obj) //проверка для объекта, вызывается парсером { if(Obj.Вес > 100) return "а не надорвешься?" //не прошла проверка по весу }
При вводе комады "взять бомбу" парсер попытается подобрать подходящий шаблон и объекты к нему. В нашем случае это будет шаблон действия "взять" и объект "бомба".
При этом для объекта парсер выполнит проверки:
- бомба находится в текущей локации (префикс @ у переменной Obj)
- бомба отноится к классу "предмет" или имеет свойство "предмет" (Obj:предмет)
- вызовет проверку взять.Obj(бомба).
и только в случае если все проверки прошли успешно, парсет будет искать метод "взять(Obj)" у персонажа и выполнит его.
Обычно далее никаких ветвлений не требуется. Все объекты, способные браться, берутся одинаково.
----
2. Давно известно что любые конструкции языка можно заменить на if() и goto.
При желании все можно представить как switch. Только зачем?
Основное отличие тут в том, что методы можно разнести по классам и при необходимости перегружать. С ветками switch-а так не получится...
----
3. Это как раз и есть исключительная реакция. Ее можно реализовать по разному. Например так:
class предмет .doTake(){} //обычно предметы берутся без последствий бомба.doTake() //перегружаем метод { %Бабах! Бомба взорвалась у тебя в руках! die() } pers.взять(Obj) { %Ты взял {Obj*Вп}. this + Obj //Obj помещаем в инвентарь Obj.doTake() //вызываем метод объекта для нестандартных реакций }
получаем:
> взять бомбу
Ты взял бомбу.
Бабах! Бомба взорвалась у тебя в руках!
Ты умер.
Отредактировано ASBer (15.12.2008 17:04)
Неактивен
0.2.4.0 альфа. пожалуй, становится психологически трудно тестировать движок на примере одной и той же игры. хотя, для демы, игра просто суперская!
крупных багов не замечено. на наличие старых, уже описанных в теме багов игру не проверял.
из мелочей, пожалуй, самым неприятным, как игроку было:
после запуска игры невозможно получить список команд оболочки,
типа Restart или Сохранить
может, по команде help давать описание трёх команд:1 help - выводит этот текст
help <команда> - выводит описание команды
2 ... - список команд оболочки
3 ... - спискок команд игры?
нельзя ли автоматизировать вывод этих списков? а то команда брось понятна мышонку, а в списке хелпа её нет
более серьёзным для автора платформы, но не столь важным для игрока, может будет:
очки[предмет, а не баллы] не отображаются в инвентаре, вообще нигде... нет команды, позволяющей получить прямое указание на наличие/отсутствие очков у мышонка.
ну, и совсем маловажные замечания связаны с возможностью отдавать команды другим персонажам:
мышонок> мама, возьми очки
- мама-мышь, пожалуйста, возьми очки - попросил мышонок.
Мышонок не даст тебе темные очки.
мама-мышь> мышонок, загляни в мешок
- мышонок, пожалуйста, заглянуть в мешок - попросила мама-мышь.
- Мышонок, не трогай мешок с горохом, это наши запасы на зиму! - сказала мама-
мышь.
- так вот где хранится стратегический запас! - обрадовался мышонок.
(+10 баллов)
В лесу страшно ухнул филин.
мама-мышь> мышонок, возьми горох
- мышонок, пожалуйста, возьми горох - попросила мама-мышь.
- Мышонок, нельзя трогать горох, это наши запасы на зиму! - сказала мама-мышь.
Дядюшка-крот кряхтя залез в кротовий лаз.
Выбор персонажа> крот
Напишите подробнее, что Выбор персонажа должен сделать с дядюшкой-кротом?
платформа однозначно очень нравится. чувствуется верный подход- без костылей. изучаю примеры, думаю о создании своей демы под ТОМ.
p.s.
тестирование идёт вяло... хочется новой, не менее забавной демы
Отредактировано noname (15.12.2008 22:35)
Неактивен
noname
> пожалуй, становится психологически трудно тестировать движок на примере одной и той же игры. хотя, для демы, игра просто суперская!
Noname, как самого упорного тестировщика готов включить тебя в раздел благодарностей (когда он появится)
После запуска игры невозможно получить список команд оболочки, типа Restart или Сохранить
Мне не удалось это повторить... у меня команда помощь/help/? работает везде и всегда.
> нельзя ли автоматизировать вывод этих списков? а то команда брось понятна мышонку, а в списке хелпа её нет
Помощь просто тупо проигрывает файлик help.txt из каталога игры. Если там чего-то нехватает, значит это нужно просто добавить.
> более серьёзным для автора платформы, но не столь важным для игрока, может будет:
очки[предмет, а не баллы] не отображаются в инвентаре, вообще нигде... нет команды, позволяющей получить прямое указание на наличие/отсутствие очков у мышонка.
Очки отображаются в описании персонажа. Отображать их еще и в инвентаре совсем не проблема
> ну, и совсем маловажные замечания связаны с возможностью отдавать команды другим персонажам:
Да, эти несуразности меня тоже повеселили. Будет исправлено в следующей версии.
>тестирование идёт вяло... хочется новой, не менее забавной демы
Сейчас нагло тырю демки из рТАДСа. Золотой череп почти работает.
Неактивен
да, насчёт help-а я ступил: действительно, всё выводится.
я имею достаточный навык программирования на дельфи, что бы сделать полноэкранную прогу, которая будет принимать ввод юзера и выводить ответную реакцию. что ещё мне нужно знать, что бы написать для ТОМ свой интерфейс? ( планирую полноэкранный режим 1680х1050, два файла "картинок": в одном- 255 используемых символов, в другом- "спрайты" таких же размеров, как и символы, из которых можно будет составлять картинки. как в sinclair-е. второй файл для каждой игры- свой, составляется авторами. картинки чёрно-белые, при выводе цвета фона и карандаша зависят от значений соотв переменных).
Отредактировано noname (16.12.2008 11:12)
Неактивен