Форум » » Продвинутые возможности QSP-языка » Ответить

Продвинутые возможности QSP-языка

luciofulci: Во-первых, хотелось бы поблагодарить создателя движка за отличную работу. Впечатляет, без смайлов! Но, во-вторых, к сожалению, бросается в глаза некоторая несбалансированность самого языка. Например, отсутствует поддержка функций, определенных пользователем (про объекты, которые значительно облегчают написание сколько-нибудь сложных игр я не говорю...). Эта ограниченность приводит к необходимости использовать обходные пути, использовать локации и инвентарь явно не по назначению и т.д., что в дальнейшем затрудняет понимание и редактирование собственного кода :( Разумеется, это объясняется тем, что язык рассчитан в идеале для людей, слабо разбирающих в программировании, но при этом присутствует такая продвинутая фича, как динамическая генерация кода, для адекватного использования которой требуется серьезный опыт кодинга. Хотелось бы задать вопрос - будет ли язык развиваться в плане добавления новых возможностей, таких как функции и классы? Заранее спасибо за ответ!

Ответов - 72, стр: 1 2 3 4 All

Byte: Кому интересно - http://qsp.su/misc/libqsp550a1.zip

Byte: Обновил - http://qsp.su/misc/libqsp550a2.zip

Byte: Добавил передачу аргументов ARGS для GT/XGT. В $ONNEWLOC передаются аргументы, с которыми был вызван GT/XGT. То есть: [pre2] #start $onnewloc='new' gt 'loc1',1,2 -- #loc1 gt 'loc2',3,4,5 -- #loc2 'Перешли в <<$curloc>>, аргументы <<args[0]>>, <<args[1]>>, <<args[2]>>' -- #new $curloc arrsize('args') args[0] args[1] args[2] --[/pre2] Скачать: http://qsp.su/misc/libqsp550a3.zip


elmortem: arrsize - вкусняшка... ^__^

luciofulci: Респект! А в меню, вызываемое через оператор menu, параметры добавить не планируется?

Byte: Нет :-)

luciofulci: Ок. В принципе, это и не особо нужно :) А после возвращения из gs, массив args "обнуляется"? Да, обнуляется, просто это у меня коде глюк, сорри

Byte: Не обнуляется, а "возвращаются" предыдущие значения.

Byte: Добавил необязательный параметр для NL/*NL и параметр у PL/*PL сделал необязательным. Теперь между NL/*NL и PL/*PL разница в том, что NL сначала делает перевод строки, потом выводит данные, а PL наоборот - сначала выводит данные, а затем делает перевод строки.

luciofulci: Byte пишет: Не обнуляется, а "возвращаются" предыдущие значения. А какие у них предыдущие значения? В общем, при переходе в локацию без параметров значение $args - пустые строки, а args - 0. Я это имел в виду. То есть в случае вызова gs 'some_loc', 'blah', -1 , локация получит: $args[0] = "blah", args[1]=-1. А при вызове gs 'some_loc', 'blah', значение args[1] всегда будет нулевым.

Byte: Предыдущие значения - значения на момент вызова. Если мы вызываем GS из локации, вызванной по GS, то после обработки локации предыдущие значения восстановятся.

luciofulci: Понял, спасибо.

Ajenta: Таак, оно конечно всем за всё спасибо, но всё-таки прошу не сильно усложнять. :) Сейчас действительно есть всё, что требуется, а то, чего нет можно через html реализовать :)

elmortem: Ajenta К сожалению, HTML поддерживается лишь на базовом уровне. Ну и все "усложнения" касаются лишь дополнений к уже имеющемуся. Т.е. справка, конечно, пухнет, но проблему быстрого "вхождения в QSP" сейчас легко решают уроки, а их скоро станет больше и они будут доступнее для понимания. Ну а уж коли понадобится что-то специфичное - можно будет и в справку глянуть. (:

luciofulci: Все изменения в релизе 5.5, насколько я в курсе, - это дополнения. То есть, переделывать ничего не придется, хотя, возможно, стоит, так как некоторые вещи стали намного проще, а не сложнее :)

Byte: luciofulci да

Ntropy: Byte пишет: Думаю, возможно имеет смысл сменить название на FUNC ? UPD: Решил переименовать в FUNC. Ещё добавил функцию ARRSIZE($имя_массива) - возвращает число элементов массива. Всё таки победил вариант dyneval?

Byte: DYNEVAL это из другой оперы (динамическое вычисление выражений). Для вызова пользовательских функций победил FUNC/$FUNC.

werewolf: Byte ты писал что добавление параметров в оператор menu не планируется - это принципиально ограничение или просто нежелание усложнять синтаксис? а то я наткнулся на ситуацию, где удобнее всего иcпользовать menu, но без параметров придется создавать кучу локаций, большая часть которых будет состоять из одной строчки - вызова функции

Byte: werewolf, объясни ситуацию - думаю, найдём простой выход без создания кучи локаций. Про MENU - это и усложнение синтаксиса, и несовместимость, и еще ряд факторов, касающихся реализации. Плюс к этому, хочется верить, что это можно вполне нормально обходить.



полная версия страницы