Всем привет! Поиграл тут недавно в игру Вася-2. И захотел сделать нечто подобное, но не знаю с чего начать. Кто нибудь, подскажите плиз, где взять информацию о том как пишутся игрушки, или совет дайте, ведь есть же здесь люди, которые сами до всего додумались, помогите други пожааааааааалуйста!!!! %))))))))
Неактивен
Ну... я все-таки бы оперировал классами. Задачка-то просто под них и сформулирована. ![]()
Но это - только одна из многих заморочек. Граждане вон с тектовым вводом парятся, к примеру.
По своему (хилому, бестолковому и незначительному) опыту скажу, что описание игрового пространства в терминах хоть объектов, хоть чего - по сравнению с распознаванием тестового ввода - Гы!
просто и прозрачно. (реверанс в сторону Olegus t.Gl.).
Скажу больше. На самом деле, все эти технические стороны - пустяки по сравнению с ИДЕЕЙ и СЮЖЕТОМ.
И - собственно текстами
...
Иначе - почему же так немного есть игрушек в которые приятно не выйграть-пройти а просто играть....
(опять поклон Olegus t.Gl. - я терпеть не могу демки. Никогда нельзя в них понять, толи ты сам идиот и тупица, толи - просто еще не до конца эпизод дописан.... Но на мой взглад твоя затея стоит того, чтобы ее до конца довели.).
Неактивен
stalker написал:
Согласен ООП (Объектно Ориентированный Подход
) в данном случае оптимален. А по поводу текстового ввода тут задачу нужно разбить на несколько частей:
1. получение команды от пользователя (собственно работа с устройством ввода)
2. разбиени команды на части с предварительным анализом введенной информации (парсинг)
3. реакция игры на команду
Вот и решать нужно эти задачи отдельно и обстоятельно.
Голова - хорошо, а полторы - лучше! ;D
Обмозговать попробуем?
Неактивен
stalker написал:
Согласен. Ты на чем пишешь ? Я вот хочу на object pascal - оно же Delphi, накатать библиотеку классов облегчающую создение своей игрушки.
На ++.
"Пишу" - громко сказанно.
Впрочем язык - не столь важен.
И потом, думается мне, что проще (интереснее и полезнее) написать самому хомутов, глюков и багов, чем разбираться в чужих. ![]()
Я вывалю свое видение предмета, Ок?
Неактивен
Я понимаю тебя. Давай-ка к этому еще вернемся, Ок? И предлагаю
(поскольку сам - тупой, невежественый, ленивый)
для начала обсосать идеи.
Кто знает - может кому-нибудь и поможет.
(Мне, к слову, это помогает сосредоточиться и расставить все по полочкам.)
stalker написал:
Согласен ООП (Объектно Ориентированный Подход
) в данном случае оптимален. А по поводу текстового ввода тут задачу нужно разбить на несколько частей:
1. получение команды от пользователя (собственно работа с устройством ввода)
2. разбиени команды на части с предварительным анализом введенной информации (парсинг)
3. реакция игры на команду
Вот и решать нужно эти задачи отдельно и обстоятельно.
Оспариваю:
Первые два пункта разумно объединить в один. И назвать интерфейсом.
От того, КАК происходит ввод команды сильно зависит то, ЧТО с вводом прийдется сделать,
прежде чем его можно будет использовать.
Наиболее простой метод получения команды от игрока- использование меню.
В любом его виде. Когда просто предоставляется список возможных выборов.
Даже если это "чтобы зажечь свечу введите 1, чтобы закрыть окно -2"....
(Выскажу свое IMHO: даже использование столь примитивного интерфейса,
при наличии всего остального в должной степени, не способно погубить хорошую игру.
Равно как и наоборот - даже экспертная система с элементами искуственнного
интеллекта не способна сама по себе вытянуть игру, сделать ее интересной.)
Так вот. По сути для такого минимального варианта не требуется ничего, кроме собственно моделирования, второй (и основной части).
Другая крайность - клавиатурный ввод, распознавание отдельных слов, анализатор команд... и далее .
В конце концов каждый волен решать сам - что он будет реализовывать, а чем может и пожертвовать.
(Возможен, к примеру, промежуточный вариант - манипулирование определенным набором понятий. <Действовать>=Зажечь, <объект>=Свеча, <средство>=спичкой....
Или там, явное ожидание ввода определенной(до символа) фразы "зажги свечку спичкой"
Как и всякий компромисс - морская свинка, ни рыба ни мясо... )
Недоумеваю, почему я нигде не нашел подсказки по словарю (и добавления в него пользовательских слов-синонимов, сокращений..)... то есть просто - тупого перечесления понимаемых слов?
Разумеется фразу "засвети свечу и озари комнату" не назовешь расхожей... Но почему бы и нет?
Вот. Теперь о моделировании.
Собственно всю игра - это не более чем совокупность (массив, список, итд) объектов с теми или иными свойствами.
Реакция программы на действия пользователя - в том или ином виде изменение свойств объектов.
Как все просто, не так ли? ![]()
Я ничего не про(у)пустил?
С чего начнем?
Неактивен
stalker написал:
Не согласен. Нельзя объединять и так довольно общие пункты, нужно дробить-дробить и еще раз дробить. 8).
Предпочитаю идти сверху вниз.
stalker написал:
Собственно можно начать с продумывания интерфейса, парсера, объектного пространства,
объектов (комнат, предметов, персонажей и т.п.).
Не все столь линейно.
Начнем с парсера?
В целом, чтобы не топтать зазря клавиатуру, можно за рабочий вариант принять идеи,
изложенные в статье Olegus t.Gl. https://ifiction.ru/a/ifparser.html.
(прочитать, что-ли...)
Что хочется иметь на выходе подпрограммы анализа (того, что я называю интерфейсом в целом?)
Какую часть работы по взаимодействию с пользователем следует возложить на анализатор, а какую - моделингу?
Наверно, возможно написать парсер, достаточно интеллектуально объясняющий игроку почему нельзя "открыть свечу" или "зажечь дверь" ![]()
Но, если уж приспичит
вдруг сделать именно это - все прийдется переписывать.
Вообще, не стоит забывать про маштабируемость (и непредсказуемость творчества)
.
Анализатор - занятная задачка.
Нужно ли учитывать порядок слов в обрабатываемой фразе? А как на счет предлогов?
Можно ли допустить присутствие неопознанных слов?
Стоит ли замахиваться на сложные предложения или ограничиться короткими?
А?
Неактивен
Вот думал-думал... и чем больше думал, тем больше вопросов возникало.
Посоветуйте. Мнение выскажите. Вразумите чайника.
Нужны ли на самом деле развесистые словестные конструкции ? (и какой минимальный набор необходим)?
Насколько целесообразно заставлять пользователя применять жесткие (like English) правила грамматики и следования слов?
Настолько ли действительно необходим этот идеальный парсер? Недоумеваю! :-/
Неактивен
Сорри за вольное цитирование..
>> на выходе мы в идеале должны получить ссылки на объекты.
Легко. По падежу определяешь главный(назовем его так) член предложения (см ниже) и просто передаешь всю последовательность ему.
Пусть он разбирается, применимы ли к нему глаголы - предлоги - второстепенные члены... И отвечает об этом пользователю.
>> учитывать порядок слов можно, но закрепостит игрока.
"ящик" "сундук" "поставь" "на"
а в этом случае как? Оба предмета в винительном падеже.
И размера похожего ![]()
Неактивен
>> >> Можно ли допустить присутствие неопознанных слов?
>> На мой взгляд, нельзя
Парсер способный вычленить главное и правильно обработать фразу с лишними словами (естественные языки избыточны, кроме всего прочего) - большой плюс.
Надо поразмыслить....
Неактивен
Etev написал:
Господа
Любезный!...
Вам следует, на мой взгляд, заниматься не компьютерной лингвистикой,
а родной устной речью. С целью научиться выражать Ваши мысли связно,
понятно и не противоречиво.
Не могли бы Вы попробывать объяснить еще раз, что же Вы хотели сказать, да так, чтобы даже полный придурок, вроде меня, Вас понял?
Сделайте одолжение!
Теперь мой ответ на Ваш читаемый между строк вопрос "Зачем?"... Даже если его и небыло, думаю Вам полезно будет знать, что я - полная серость, посредственность и бездарность. И потому любые мои "достижения" имеют хоть какой-то вес только для меня.
А потому все что я делаю - я делаю исключительно для своего собственного удовольствия.
Неактивен