Автор | Сообщение |
|
| хитрый латышский койот
|
Сообщение: 290
Зарегистрирован: 14.06.05
|
|
Отправлено: 18.06.08 14:51. Заголовок: AkUrq2
AkUrq 2.12 beta 8 Потихоньку пишется новая акурка2, основанная на идее Sfeli и содержащая не малую долю его кода. Возможности пока довольно скромные, но это вопрос времени. требует только IE5 (Windows 98+) Что мы имеем: цитата: | Операторы: ;комментарий :(локация) p (текст без кавычек) pln (текст без кавычек) goto (локация) proc (локация) btn (локация),(описание) (оператор)&(оператор) cls instr (переменная)=(текст без кавычек) (переменная)=(значение) if (условие) then (оператор) [else (оператор)] inv+ [число,]предмет inv- [число,]предмет invkill [предмет] perkill play (имя_файла)[.wav] input (переменная) end _ (продолжение предыдущей строки) (<= >= <> > < = - + * / ==) Системные метки: :Сommon[_номер] :use_(предмет)[_действие] Конструкции: #/$ ##(код символа)$ #%(имя переменной)$ #(имя переменной)$ Системные переменные: previous_loc current_loc last_btn_caption common music count_(метка) rnd[число] inv_(предмет) |
| Краткое описание языка (Выборочно использовалась помощь от Корвина) Скрытый текст
цитата: | Операторы: ;комментарий - Помогает разработчику не запутаться в своём коде. Всё после ; игнорируется интерпретатором (до конца строки) Пример: pln Это будет напечатано.;А этот комментарий - до конца строки, напечатан не будет. :(локация) - Оператор обозначения меток. Пример: :локация Отличие от досурки - в метках поддерживаются конструкции #$, #%$, ##$. Если вы хотите сохранить совместимость с dos_urq не используйте в метках такие символы х) p (текст без кавычек) - Выводит на экран текст. pln (текст без кавычек) - Выводит на экран текст и переносит строку. goto (локация) - Переходит на указанную локацию. Если метки не существует, - оператор игнорируется. Пример: goto tower proc (локация) - Передает управление на указанную метку, но когда встречается end, - возвращает управление обратно, оператору, следующему за proc. Допустима вложенность. Если метки не существует, - оператор игнорируется. Пример: proc tower btn (локация),(описание) - Создает кнопку для выбора вариантов действия с надписью на ней (описание), при клике на ней будет осуществлен proc на системную метку Common (если такая есть), затем переход на (локация). Пример: btn tower,Взобраться на башню (оператор)&(оператор) - объединение нескольких операторов. Пример: cls&pln Текст&btn tower,Взобраться на башню cls - Очищает экран instr (переменная)=(текст без кавычек) - Устаревший оператор. Присваивает переменной текстовое значение. Всё что после "=" заносится в переменную (переменная), поэтому писать следует без кавычек. Пример: instr time=время - 17:42 (Альтернатива time="время - 17:42") (переменная)=(значение) - Присваивает переменной (значение). Пример: time="время - 17:42" min=42 В первом случае присвоили строку, во втором число. Для совместимости с досуркой, которая некорректно понимает кавычки, крайне не рекомендуется присваивать строки таким способом, желательно использовать для этих целей устаревший оператор instr. if (условие) then (оператор) [else (оператор)] - Оператор условия. Можно делать сложную конструкцию, используя &, and, or, not и скобки. Допустимость любой степени вложенности if'ов сохраняется, else всегда соответствует последнему if'у. Пример: if inv_Спичек>=50 then btn buildHouse, Построить домик из спичек inv+ [число,]предмет - Добавляет в инвентарь предмет(ы). Если [число,] не указано, добавляется 1 предмет. Пример: inv+ Жемчужина inv+ 5,Жемчужина В первом случае добавится одна Жемчужина, во втором пять. inv- [число,]предмет - Удаляет предмет(ы) из инвентаря. Если [число,] не указано, удалится 1 предмет. Пример: inv- Жемчужина inv- 5,Жемчужина Количество предметов не может быть отрицательным. invkill [предмет] - Без параметров - удаляет все предметы из инвентаря, Если [предмет] указан, то удаляет только предметы типа [предмет]. Пример: invkill invkill Жемчужина В первом случае удаляются все предметы, во втором только все жемчужины. perkill - Очищает все ранее присвоенные переменные. play (имя_файла)[.wav] - Однократно проигрывает из папки квеста указанный файл. Если расширение явно не указано, то по умолчанию ищется .wav файл. Пример: play 05 - Forsaken.mp3 play 05 - Forsaken В первом случае проиграется файл "05 - Forsaken.mp3", во втором - "05 - Forsaken.wav" input (переменная) - Просит пользователя ввести строку, значение которой будет присвоено указанной переменной. Пример: input x Для совместимости с досуркой, которая некорректно понимает присвоенные в input строки, перед воодом строки следует делать так: instr x= input x end - Оператор конца локации. На этом месте выполнение квеста обычно прерывается для ожидания дальнейших действий игрока (например нажатие на кнопку). Или же происходит возврат к следующему после proc`а оператору, если до этого встречался proc (смотри подробнее proc). _ (продолжение предыдущей строки) - Оператор склеивает строку с предыдущей. Пример: pln Текст в этой строке слишком длинный, поэтому мож _ет следует перенести его сюда? (<= >= <> > < = - + * / ==) - Используются в операторе if и операторе присваивания. Подробнее о ==: == Дает истину при сравнении строковой переменной со строкой по правилам сравнения регулярных выражений, т.е.: Пример: if "aBBBa"=="a*a" then ;Верно if "F"=="[A-Z]" then ;Верно. if "F"=="[!A-Z]" then ;Неверно. if "a2a"=="a#a" then ;Верно. if "aM5b"=="a[L-P]#[!c-e]" then ;Верно. if "BAT123khg"=="B?T*" then ;Верно. if "CAT123khg"=="B?T*" then ;Неверно. Верно значит что условие даст истину и выполнится then Неверно - условия ложно, и выполнится else (если он есть). На самом деле это несложно. Описание: ? Любой одиночный символ * Ноль или более символов # Любая одиночная цифра (0-9). [charlist] Любой одиночный символ в классе символов (списке) [!charlist] Любой одиночный символ не принадлежащий классу символов Примечание: в Досурке этот оператор работает по другому. За подробностями к Виктору. Системные метки: :Сommon[_номер] - Локация вызывается после каждого нажатия на кнопку. Зависит от системной переменной common, (при common=0 вызывается "common", при common=12 уже "common_12", и так далее) Пример: :Сommon pln Если вставить этот кусок кода в большой квест, то к его концу всем точно надоест эта надпись х) end :use_(предмет)[_действие] - Системная локация, если она существует, то с предметом можно совершать действия. Если действие опущено, то по умолчанию оно будет "Осмотреть". Таких локаций может быть несколько, но они не должны называться одинаково. Конструкции: Конструкции которые заменяются при выполнении кода значением. #/$ - Заменяется на перенос строки. ##(код символа)$ - Заменяется на аски символ с указанным кодом. Обычно используется для вывода служебных символов (";", "$"..) #%(имя переменной)$ - Устаревшая конструкция. Используется вывода строковых переменных в досурке. #(имя переменной)$ - Оператор для вывода переменных. В досурке - только числовых. Для совместимости всегда выводите строки с помощью #%(имя переменной)$ пустые конструкции типа #$ заменяются на пробел Системные переменные: previous_loc - Содержит имя предыдущей локации current_loc - Содержит имя текущей локации last_btn_caption - Содержит описание последней нажатой кнопки. common - Переменная управляющая работой системной локации Сommon (смотри подробнее "системная локация Сommon") Пример: common=1 music - зацикленно проигрывает из папки квеста указанный файл. Если расширение явно не указано, то по умолчанию ищется .mid файл. Пример: music=5 music="5.mid" instr music=5.mid Во всех случаях проигается файл "5.mid" count_(метка) - Переменная хранит в себе число заходов на метку. rnd[число] - Если число опущено, то при обращение генерирует случайное число от 0 до 1. Если обозначено, то случайное целое число от 1 до число. inv_(предмет) - Системная переменная для управления инвентарём. Пример: inv_жемчужина=50 if inv_жемчужина<5 then pln Что-то у тебя мало жемчужин! Возьми-ка ещё одну!&inv+ Жемчужина В первом случае, сколько бы у вас не было жемчужин, их станет 50, во втором - если жемчужин меньше пяти, то выводится текст и в инвентарь добавляется ещё одна жемчужина. Существует устаревший вариант проверки вещей в инвентаре, для совместимости с RipUrq: Пример: if 2 жемчужина then pln Хмм, у тебя есть две жемчужины (или даже больше)! Ладно проходи! if Жемчужина then pln Хмм, у тебя есть жемчужина! Ладно проходи! В первом случае проверяется есть ли у игрока две жемчужины. Проверка пройдет успешно если у игрока две или больше жемчужин. Альтернатива if inv_жемчужина>=2 then .... В втором случае проверяется есть ли у игрока предмет жемчужина. Проверка пройдет успешно если у игрока одна или больше жемчужин. Альтернатива if inv_жемчужина>=1 then .... Дополнения приветсвуются. |
|
| очень короткий FAQ: цитата: | В1: Тут слишком мало возможностей для моих извращённых идей :) где синусы, вычисление корня, тысячи картинок, xbtn, и вообще где первая акурка? (привет Суд :) О1: Думаю первая акурка дорабатываться больше не будет. Новые операторы в квотерое появятся со временем, но не так как они появлялись в первой акурке: операторы будут появляться только после того как их синтаксис утвердят большенство метров, к которым я отношу: Евгения, Сфели, Виктора, Корвина. Уважаемый Борщевский разумеется тоже метр, но поскольку он ненавидит урку, я боюсь его спрашивать :) В2: Где инвентарь? Месяц найти не могу уже. (привет Хлом :) О2: Клавиши I и F6 открывают инвентарь. В3: Как теперь закрыть инвентарь? (привет Гор ) О3: Теми же клавишами. В4: Как закрыть текущий квест и начать новый? О4: F2 выводит в меню. В5: Что можно настроить в ини файле? О5: Можно изменить шрифт (Goraph) и включить/отключить управление кнопками на цифрах. Если результат вас не устроит, а как было вы не запомнили х) то удалите ини файл |
| Ну и выражаю благодарность Sfeli который написал добрую половину функций. Их легко вычислить - если чтото в квотерое работает без проблем - это писал Сфели) Если глючит - то Акела) Сообщения в этой теме буду периодически удалять
|
|
Профиль
Цитата
Ответить
|
Новых ответов нет
, стр:
1
2
3
4
All
[см. все]
|
|
|
| |
Сообщение: 77
Зарегистрирован: 03.07.07
|
|
Отправлено: 12.07.08 08:42. Заголовок: о, какие страшные ко..
о, какие страшные конструкции.
|
|
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 72
Зарегистрирован: 20.01.07
|
|
Отправлено: 12.07.08 10:07. Заголовок: Идиотизм, по-моему. ..
Идиотизм, по-моему. URQL ущербен, по определению. Синтаксис языка не продуман совершенно. Поэтому постоянно приходится подставлять костыли...
|
|
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 89
Зарегистрирован: 19.11.07
|
|
Отправлено: 12.07.08 10:10. Заголовок: Знаю... зато можно б..
Знаю... зато можно будет в метках локаций использовать запятые и & :) Они хотя-бы похожи на конструкции URQL...
|
|
Профиль
Цитата
Ответить
|
|
| неизвестный человек
|
Сообщение: 141
Зарегистрирован: 08.06.07
|
|
Отправлено: 21.07.08 16:24. Заголовок: Chicago1920 пишет: ..
Chicago1920 пишет: цитата: | Акела, может стоило из пре 1 и пре 6 сделать стабильную 1.3, а потом заниматься второй акуркой? И второй вопрос:в чем отличие 1 и 2 акурки? |
| Chicago1920 пишет, но никто не отвечает)
|
|
Профиль
Цитата
Ответить
|
|
| хитрый латышский койот
|
Сообщение: 304
Зарегистрирован: 14.06.05
|
|
Отправлено: 21.07.08 16:49. Заголовок: как никто не отвечае..
как никто не отвечает) я каждый день заглядываю на форум и стараюсь отвечать даже на лс) мне просто страшно читать эту тему х) акурк2 на хтмл, первая на рич, основное отличие в этом Nex пишет: цитата: | о, какие страшные конструкции. |
| +1)
|
|
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 415
Зарегистрирован: 25.05.05
|
|
Отправлено: 21.07.08 18:22. Заголовок: Акела пишет: Nex пи..
Акела пишет: цитата: | Nex пишет: цитата: о, какие страшные конструкции. +1) |
| А что если все же как я предлагал? :лока1 ... xbtn метка_проц,Название кнопки ... end :метка_проц операторы end Мне кажется не слишком уродливо и сочетается с принципами URQL Какая разница - внутри локи операторы лежат или рядом?
|
|
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 1
Зарегистрирован: 05.08.08
|
|
Отправлено: 05.08.08 15:36. Заголовок: frodo
А может так? :лока1 ... xbtn метка_проц,лока2,Название кнопки ... end :метка_проц операторы end где лока2 -- локация, выполняемая после :метка_проц, т.е. xbtn выполняет proc метка_проц&goto лока2
|
|
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 420
Зарегистрирован: 25.05.05
|
|
Отправлено: 06.08.08 07:00. Заголовок: frodo пишет: :лока1..
frodo пишет: цитата: | :лока1 ... xbtn метка_проц,лока2,Название кнопки ... end :метка_проц операторы end где лока2 -- локация, выполняемая после :метка_проц, т.е. xbtn выполняет proc метка_проц&goto лока2 |
| Тогда надо оставить возможность пустой метки xbtn метка_проц,,Название кнопки
|
|
Профиль
Цитата
Ответить
|
|
| |
Сообщение: 1
Зарегистрирован: 10.07.08
|
|
Отправлено: 09.08.08 11:51. Заголовок: Просьба
2Akela: Не мог бы ты ввести в Акурку (опционально) отображение названия текущей локации?
|
|
Профиль
Цитата
Ответить
|
|
| |
Сообщение: 1
Зарегистрирован: 10.08.08
|
|
Отправлено: 10.08.08 04:43. Заголовок: Начинается :)
Могут быть проблемы при переходах в локацию по goto. Может лучше сделать системную переменную для отображения заголовка окна? Или ничего не делать?
|
|
Профиль
Цитата
Ответить
|
|
| хитрый латышский койот
|
Сообщение: 307
Зарегистрирован: 14.06.05
|
|
Отправлено: 10.08.08 06:58. Заголовок: Системные переменные..
Системные переменные: previous_loc - Содержит имя предыдущей локации current_loc - Содержит имя текущей локации
|
|
Профиль
Цитата
Ответить
|
|
|
| постоянный участник
|
Сообщение: 421
Зарегистрирован: 25.05.05
|
|
Отправлено: 11.08.08 08:25. Заголовок: Акела пишет: Систем..
Акела пишет: цитата: | Системные переменные: previous_loc - Содержит имя предыдущей локации current_loc - Содержит имя текущей локации |
| Это понятно. Речь шла об отображении в заголовке окна не названия программы, а имени локации. Т.е. например системная переменная instr win_capture="" - отображается имя программы интерпретатора, instr win_capture=current_loc - - отображается название текущей локации. instr win_capture="Дом" - заданное название окна. Лично я не уверен, что это надо делать.
|
|
Профиль
Цитата
Ответить
|
|
| |
Сообщение: 3
Зарегистрирован: 28.07.08
|
|
Отправлено: 11.08.08 10:08. Заголовок: MixeratoR пишет: 2A..
MixeratoR пишет: цитата: | 2Akela: Не мог бы ты ввести в Акурку (опционально) отображение названия текущей локации? |
| Корв чтото ты мудришь, тут ничего такого я не нашёл. ну делать в любом случае не стану.
|
|
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 422
Зарегистрирован: 25.05.05
|
|
Отправлено: 11.08.08 13:44. Заголовок: Акела(w) пишет: Кор..
Акела(w) пишет: цитата: | Корв чтото ты мудришь, тут ничего такого я не нашёл. |
| Может это я неправильно понял? MixeraroR, поясни свою мысль? Акела(w) пишет: цитата: | ну делать в любом случае не стану |
| Ну, меня ты не расстроил. :)
|
|
Профиль
Цитата
Ответить
|
|
| |
Сообщение: 2
Зарегистрирован: 10.07.08
|
|
Отправлено: 13.08.08 00:32. Заголовок: Korwin, ты всё прави..
Korwin, ты всё правильно понял. Да, это в принципе не сильно нужная функция : pln Название Локации pln Только придётся сделать вывод названия в виде отдельной метки, чтобы отображать ТОЛЬКО при переходе с другой локации.
|
|
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 206
Зарегистрирован: 20.12.05
|
|
Отправлено: 13.08.08 01:43. Заголовок: Ну, это не такая бол..
Ну, это не такая большая жертва. Можно, кстати, и без отдельной метки сделать. Только не нужно Согласен, что функция слишком специфическая, чтобы добавлять ее в ближайшие несколько десятков акурок.
|
|
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 5
Зарегистрирован: 05.08.08
|
|
Отправлено: 14.08.08 16:52. Заголовок: А вот что меня интер..
А вот что меня интересует: в предыдущей акурке если во время выполнения оператора pause кликнуть по инвентарю, то идущие следом операторы не выполняются. Нельзя ли сделать так, чтобы после операций с инвентарем игра возвращалась к вышеназванному оператору?
|
|
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 9
Зарегистрирован: 27.08.08
|
|
Отправлено: 11.10.08 15:47. Заголовок: К слову, а как на не..
К слову, а как на ней вставлять картинки?
|
|
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 191
Зарегистрирован: 17.03.08
|
|
Отправлено: 11.10.08 23:24. Заголовок: 1) Korwin, frodo - м..
1) Korwin, frodo - молодца! xbtn локация_процедуры, локация_перехода, название_кнопки идеально! 2) xbtn метка_проц,,Название кнопки - совершенно излишне. разве не лучше: xbtn метка_проц,текущая_локация,Название кнопки ? ведь после выполнения чего-угодно хорошо бы отобразить чё-то на экране, а не так, что юзер жмёт чего-то и ничего не меняется... или ты, Корв другое имел ввиду? p.s. только сегодня серьёзно взялся за куспель, так нате- урка возвращается! прямо издевательство какое-то :)
|
|
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 437
Зарегистрирован: 25.05.05
|
|
Отправлено: 12.10.08 05:25. Заголовок: noname пишет: 1) K..
noname пишет: цитата: | 1) Korwin, frodo - молодца! xbtn локация_процедуры, локация_перехода, название_кнопки идеально! 2) xbtn метка_проц,,Название кнопки - совершенно излишне. разве не лучше: xbtn метка_проц,текущая_локация,Название кнопки ? ведь после выполнения чего-угодно хорошо бы отобразить чё-то на экране, а не так, что юзер жмёт чего-то и ничего не меняется... или ты, Корв другое имел ввиду? |
| Ну, можно и так (с) И.Сталин Ты прав... только кто же это будет реализовывать в интерпретатор?
|
|
Профиль
Цитата
Ответить
|
Новых ответов нет
, стр:
1
2
3
4
All
[см. все]
|
|