1 (edited by nusuth 2010-03-06 04:55:50)

Topic: Модуль URQ

Насчет багов и глюков в URQ-играх.
В первую очередь рекомендую курить сам исходнй код URQL.
Там это (наличие багов и глюков) практически нормальное явление, бОльшая часть игр их имеет. Причина в том, что язык URQL внешне очень прост для освоения, причем именно для освоения непрограммистами - любой новичок может приступить к написанию игры буквально через полчаса после ознакомления с каким нибудь образцом. А если говорить о тех играх, которые вошли в INSTEAD-пак, то есть, написанных людьми ответственными, то тут другая проблема - с усложнением игры усложняется отладка кода (в URQL практически отсутсвует инструментарий для профессиональной отладки), так что вероятность багов также увеличивается.
Прошу не считать мое высказывание камнем в огород URQL, просто, что есть, то есть.
А с практической точки зрения - если есть подозрение на ошибку - рекомендую проверить для начала эту ошибку в каком-нибудь из "родных" URQ-интерпретаторов (причем в том, который рекомендует (если рекомендует) сама игра).

2 (edited by nusuth 2010-03-06 07:58:55)

Re: Модуль URQ

В приложенном зипе - код, не работающий в INSTEAD
test_SHOW - Файл-тест с кодом URQ, выводящим значение переменной по ее имени.
Работает в DOS_URQ, FireURQ, AkURQ. В INSTEAD при запросе имени переменной через input выводит значение "nil", то есть проблема видимо как раз в востановлении контекста после input. Хотя с выполнением введенного пользователем кода - все нормально, работает (файл test_DO)
-----
По поводу логики языка - перечитал маны, получается да, логика предполагает, что код, заключенный в #%$-скобки, во первых, ограничен одной строкой, во вторых, &-разделитель рассматривается как разделитель только если введен в код непосредственно, а внутри скобок является просто текстом. С конструкцией <if then else> внутри #%$-скобок также проблемы. DOS_URQ выполняет код только ДО else, так что скорее всего следует склониться к профессиональному мнению автора FireURQ и считать применение <if then else> внутри #%$-скобок некорректным

Кстати, самый сумасшедший URQ-код с использованием #%$ - это "Хроники капитана Блуда: тайна левой ягодицы", надо попробовать его на INSTEAD smile

Post's attachments

Attachment icon test.zip 1.07 kb, 131 downloads since 2010-03-06 

Re: Модуль URQ

nusuth wrote:

В приложенном зипе - код, не работающий в INSTEAD
test_SHOW - Файл-тест с кодом URQ, выводящим значение переменной по ее имени.
Работает в DOS_URQ, FireURQ, AkURQ. В INSTEAD при запросе имени переменной через input выводит значение "nil", то есть проблема видимо как раз в востановлении контекста после input. Хотя с выполнением введенного пользователем кода - все нормально, работает (файл test_DO)

Нет, просто еще одна мелкая ошибка. smile Спасибо за тестирование, выложу 0.6 скоро -- там тест будет проходить.

Re: Модуль URQ

Для тестов выкладываю 0.5.9

Исправлено все что узнали за сегодня.

+ Добавил для удобства команду include. Правда, при использовании include едет нумерация строк (вывод ошибок) smile Но все равно -- лучше чем ничего.

Re: Модуль URQ

Еще раз, мелкий баг. smile

P.S. 0.6 уже в репозитории...

6 (edited by nusuth 2010-03-08 13:09:08)

Re: Модуль URQ

Интересная ситуация с #$. Согласно документации Рипурки, служит для воставки значения числовой переменной при текстовом выводе. Причем в Рипурке возвращается только целая часть числа, в Досурке, Файрурке и большинстве Акурок - число как есть, со знаками после запятой.

А теперь внимание, вопрос! Каков должен быть ТИП значения, которое возвращают #$-скобки. Отчет очевиден, - раз возврат происходит при текстовом выводе, то и возвращаемое значение - текстовое, то есть, строковое представление числа.

Однако, не все так просто. URQL - очень нестрогий язык, в том числе и в типизации переменных. Скорее, там постоянно неявно используется тип "variant" по отношению ко всем переменных. Поэтому, в трех упомянутых урках выражение #VAR$ вернет числовое значение. Или, точнее, значение, которое будет интерпретировано как числовое.

С практической точки зрения это означает, что выражение (VAR=#VAR$) будет истинным во всех трех урках, если VAR содержит число (при сравнении обе части выражения будут неявно приведены к типу variant). Однако в INSTEAD такое выражение ложно, так как ЧИСЛО не равно ТЕКСТУ.

Вопрос, как поступать. В моем коде выражение (VAR=#VAR$) используется как раз для определения ТИПА переменной, для того, чтобы впоследствии при выводе определить, какие именно скобки применять к переменной. Другого способа я не нашел, в классическом стандарте языка нет операторов работы с типами.

Re: Модуль URQ

nusuth wrote:

Интересная ситуация с #$.
С практической точки зрения это означает, что выражение (VAR=#VAR$) будет истинным во всех трех урках, если VAR содержит число (при сравнении обе части выражения будут неявно приведены к типу variant). Однако в INSTEAD такое выражение ложно, так как ЧИСЛО не равно ТЕКСТУ.

Я не совсем понял о чем речь, конструкция

:1
<------>A=1
<------>if A=#A$ then pln z
end

работает правильно. Хорошо, если будет каой-то пример кода, чтобы я точно понял в чем несовместимость и исправил это.

Версия 0.6

Вообще, #$ для строки возвращает количество символов, я так думал.

Функция возвращающая число, зависит от fp_prec и возвращает тип number:

function fprec(n)
<------>local prec = urq.vars["fp_prec"];
<------>if not tonumber(n) then
<------><------>error ("Error in expr at line: "..urq.ip);
<------>end
<------>n = tonumber(string.format("%."..prec.."f", tonumber(n)));
<------>return tonumber(n)
end

Короче, нужны детали.

Re: Модуль URQ

То-есть поясню текущую ситуацию в instead:
a=9
if a=#a$ -- истино всегда

instr a=text
if a=#a$ -- развернется в 4=4 (кол-во символов)

Re: Модуль URQ

Короче все плохо.
Как выяснилось в урке:

if a="" даст true если a=0 или a не определено

if a=#a$ даст false

Это взаимнопротиворечивые вещи -- я пока думаю,

Re: Модуль URQ

Все, при помощи Виктора разобрались. Дело в ПОРЯДКЕ smile)
a не равно #a$
Но #a$ равно a

То есть если один из операндов не строка, то для верного сравнения строка должнв быть справа,,,
Приаттачиваю 0.6.1

Post's attachments

Attachment icon instead-urq-0.6.1.zip 128.39 kb, 147 downloads since 2010-03-08 

Re: Модуль URQ

у меня другая проблема с urq: вместо букв пустые прямоугольники, разбавленный кое-где небуквенными символами ( как будто движок кодировку не понимает ), при этом в самом модуле всё в порядке.
без понятия куда копать ( родная кодировка кои-8 )

Re: Модуль URQ

beasdi wrote:

у меня другая проблема с urq: вместо букв пустые прямоугольники, разбавленный кое-где небуквенными символами ( как будто движок кодировку не понимает ), при этом в самом модуле всё в порядке.
без понятия куда копать ( родная кодировка кои-8 )

Такая проблема бывает, когда instead собран без поддержки iconv (в Rules.make / config.make должен быть указан флаг -D_HAVE_ICONV)

Re: Модуль URQ

beasdi wrote:

( родная кодировка кои-8 )

Фрибсд что-ли ? Если так, то в лучше не в Make лезть, а написать мне, а ещё лучше в соответствующую тему тут. Чтобы я порт пофиксил в случае чего.

Re: Модуль URQ

Если это на фрибсд, то я нашел проблему и уже отправил фикс, скоро, я думаю, закомитят изменения в порты. Я-то это за проблему не признал, и правил iconv'ом сам qst файл вручную smile

15 (edited by Hahahoj 2012-09-17 02:33:22)

Re: Модуль URQ

Подниму тему. Все игры под URQ из оф. депозитария имеют проблему с Windows 1251 кодировкой на порте интерпретатора для консоли Кену. В принципе всё запускаемо и играемо, если переконвертить .qst файлы из кодировки CP-1251 в UTF, но всё-таки это не совсем корректный выход из ситуации, имхо.

Re: Модуль URQ

похоже собралось без iconv, гляну

Re: Модуль URQ

Господин Peter, а вы слышали, что в FireURQ уже есть ссылки? Планируется ли поддержка ссылок в URQ - модуле?

Михаил Фаул к вашим услугам.

Re: Модуль URQ

Мухаха!

Не слышал, не планируется. Запланируется тогда, когда будет интересная игра, которая не запустится на urq модуле. Вот тогда-то может я и добавлю те фичи, которые нужны будут для запуска игры. При условии, конечно, что можно будет это сделать.

Re: Модуль URQ

Ответное Мухаха! Вот дословно сообщение firetona:

Вышла версия 1.6[[говорится о фурке]]:
...Изменений много:
Ссылки в тексте
Можно вставлять ссылки в текст,
выводимый в pln. Ссылки оформляются в
вики-нотации:
pln Вы стоите на берегу реки. Вдоль
берега вьётся небольшая [[тропинка|trop]]
Здесь trop - название локации, на которую
будет осуществлён переход при нажатию
на ссылку. Разумеется, как и в btn, можно
использовать параметры локации.
Цвет ссылок задаётся переменными...
Вот так то, господа.

Михаил Фаул к вашим услугам.

Re: Модуль URQ

Мухаха. smile

В вики прочитал сегодня. Пока не хочется тратить время на URQ модуль.  Все-равно 100% совместимости с ней нет, хотя бы из-за декораторов.

Будет отличная игра с ними, тогда подумаю.

Re: Модуль URQ

Блин. фича довольно простая, и я все-таки не удержался и добавил... Дайте знать, когда это кому-нибудь понадобится. А пока лежит в svn. http://instead-games.googlecode.com/svn … rq/urq.lua

Re: Модуль URQ

Муххаха... INSTEAD пример для подражаний и плагиаторства, во всех смыслах.

Qui habet aures audiendi, audiat...

Re: Модуль URQ

Ну вот, как всегда
- фичреквестеры идите лесом
- будут игры - будут фичи
- присылайте патчи, а не советы
рррррааз - я вот тут запилил через 5 минут фичу, поюзайте кто нибудь smile

Re: Модуль URQ

Подскажите пожалуйста. У меня есть программа instead. Но есть чтобы поиграть в игры на URQ нуден специальный модуль. Я его скачал и установил в папку INSTEAD / games. Потом я скачал саму игру (http://urq.plut.info/300000euro). Но там только один файл неизвестного для меня формата. Там была инструкция, но я так ничего и не понял (в програмировании не разбираюсь) Как его запустить через instead?

Re: Модуль URQ

Вот пример запаковки demo части (1я часть,), положить в каталог с играми INSTEAD (там же должен быть и urq модуль).
Игру не смотрел - 100% работа не гарантируется, настройки параметров не делал.

Post's attachments

Attachment icon extreme.zip 50.84 kb, 149 downloads since 2013-07-17