Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

  • Список
  •  » Quest Soft Player
  •  » Предложение: Работа c программным кодом локаций программным же образом

0    0    #1
05.08.2011 11:03

Olegus t.Gl.
Участник (+1053, -249)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2879
Вебсайт

Работа c программным кодом локаций программным же образом

Поскольку я довольно широко использую DYNEVAL и DYNAMIC (в том числе и в своём фреймворке), возникла следующая мысль: было бы очень неплохо иметь возможность работать с кодом самих локаций, т.е. получать, изменять и сохранять его программным образом.

Например:
LOCGETCODE(<ИмяЛокации>) — получить код локации
LOCSETCODE, <ИмяЛокации>, <ПрограммныйКод> — установить код локации

Спору нет, широкого применения этот функционал не получит, поэтому попробую пояснить для чего это нужно мне лично:
В своём фреймворке во многих командах автор должен передать программный код, который должен выполняться в тех или иных случаях (например, что должно происходить при перемещении предмета). Нюанс в том, что сейчас предпочтительней передавать этот код как строку ("…" или {…}), потому что тогда фреймворк автоматически заменяет в нём ссылки на объекты на их фактические значения. Например при работе с экземплярами объектов это просто необходимо — автор в коде указывает просто $ОБЪЕКТ, а при выполнении $ОБЪЕКТ заменяется на фактический экземпляр объекта, что позволяет точно знать, с каким именно объектом в каком месте нужно производить манипуляции. Если бы можно было программно работать с кодом локации, то автор мог просто указывать имя локации, которая должна вызываться (для многих это было бы привычней, да и сообщения об ошибках были бы более информативнее).

Неактивен

0    0    #2
05.08.2011 11:43

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2053

---

Re: Работа c программным кодом локаций программным же образом

Переделывать нужно не QSP, а плохо написанный фреймворк.

Неактивен

0    0    #3
06.08.2011 09:12

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2053

---

Re: Работа c программным кодом локаций программным же образом

Насколько я понял, претензия Олегуса заключается в том, что в его фреймворке ему приходится каждый раз передавать строку кода в "явном виде", вместо того, чтобы один раз задать ее где-то и после только ссылаться.
Для решения этой проблемы он предлагает переделать QSP, т.к. считает, что по-другому эту проблему не решить.

Я считаю, что эту проблему можно решить существующими средствами. То есть,
один раз задать код где-то и после только ссылаться
можно и сейчас, просто Олегус не знает, как это сделать.

Возможно, я ошибся насчет сути претензий: без бутылки водки и подробных разъяснений автора в этих адских дебрях хрен разберешься. В таком случае прошу меня поправить.

Неактивен

0    0    #4
06.08.2011 11:42

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2053

---

Re: Работа c программным кодом локаций программным же образом

Ты как всегда ничего не понял

Толсто.

- Доктор, почему когда я делаю вот так, мне больно?
- А вы не делайте так.

Страдания от попыток реализовать объектную систему на движке, для этого не предназначенном, вполне закономерны.
Хочешь "просто и удобно" - используй заточенный на объекты и программизмы движок, например INSTEAD.
Берешься забивать гвозди микроскопом - не жалуйся.

Неактивен

0    0    #5
06.08.2011 21:12

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2053

---

Re: Работа c программным кодом локаций программным же образом

работу с объектами ты сравниваешь с гвоздями, а QSP в этом контексте с микроскопом? Всё же не совсем подходящая метафора.

QSP настолько же предназначен для работы с объектами, насколько микроскоп - для забивания гвоздей. То, что в QSP можно при известном усилии делать объекты, ничего не меняет - ведь и микроскопом можно гвозди забить.

твой обычный лозунг — если не нравится, как всё есть, используй другую платформу!

Врешь, это никогда не было и не будет моим лозунгом.

Теперь по сути вопроса:

Программный код задаётся автором один раз — когда он прописывает то или иное действие. В дальнейшем фреймворк вызывает именно этот сохранённый код. Однако в некоторых случаях автору в этом коде нужно ссылаться на некие изменяемые значения, например на идентификатор конкретного экземпляра обрабатываемого этим кодом предмета.

Вот я "сослался на некое изменяемое значение":

Код:

$ОБЪЕКТ = 'ПЕРВОЕ ЗНАЧЕНИЕ'
$code = {*PL $ОБЪЕКТ}
$ОБЪЕКТ = 'ВТОРОЕ ЗНАЧЕНИЕ'
DYNAMIC $code

Все работает без всяких ARGS.

Неактивен

0    0    #6
06.08.2011 22:49

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2053

---

Re: Работа c программным кодом локаций программным же образом

Покажи конкретный пример, где это "не подходит".
Вне фреймворка, просто пример кода. Я пытаюсь понять, что тебе нужно, но пока упираюсь в то, что без тотального перелопачивания адского движка яснее не станет.

$ОБЪЕКТ - не глобальная переменная? А что?
"Фактический экземпляр объекта"? - что это означает?!
"Пакет данных, который содержит идентификаторы объекта и места, где конкретный экземпляр объекта находится"? - аналогично.

Приведи пример кода, без фреймворка?

Неактивен

0    0    #7
07.08.2011 07:57

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2053

---

Re: Работа c программным кодом локаций программным же образом

...вызов различных участков кода, ранее сохранённых автором (модуль формирования описания локации, модуль обработки свойства и т.п.), в которых используются идентификаторы разных объектов.

А берутся-то откуда эти идентификаторы? И как выглядит значение идентификатора?

Отредактировано Nex (07.08.2011 07:58)

Неактивен

0    0    #8
07.08.2011 12:14

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2053

---

Re: Работа c программным кодом локаций программным же образом

в тексте модуля все вхождения подстроки "$ОБЪЕКТ" заменяются на его числовое значение.

В таком случае, что здесь может "поменяться впоследствии при вызове других функций", если числовое значение уже на момент вызова кода подставлено вместо $ОБЪЕКТ?

Отредактировано Nex (07.08.2011 12:14)

Неактивен

0    0    #9
07.08.2011 14:43

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2053

---

Re: Работа c программным кодом локаций программным же образом

Что значит "такой подход ... перенести на локации"?

Неактивен

  • Список
  •  » Quest Soft Player
  •  » Работа c программным кодом локаций программным же образом

Powered by PunBB
© copyright 2001–2024 iFiction.Ru