RU

QSP-плеер: вопросы и предложения

Ntropy Moderator 30.04.2010 12:55 127 comments 54626 views

Этим сообщением открывается тема вопросов и предложений касающихся QSP-плеера.

Edited at 30.04.2010 12:57 (15 years ago)

Во-первых, про убирание. ИМХО убирать ничего не следует, чтобы не потерять совместимость с предыдущими версиями. По той же причине изменять следует только в сторону расширения возможностей.
Итак, в нашей игре (программе) есть такие основные сущности: локации, предметы, действия. И основные средства для работы с ними:

Локация ADDQST KILLQST нет
Предмет ADDODJ DELODJ OBJ
Действие ACT:END DELACT нет

Видим, что в стройной системе операций не хватает 2 функций проверки –проверки существования локации и существования действия. Причем функция для локации более важна.
Byte обещал добавить функцию loc ‘локация’ (проверка, существует ли данная локация).
При этом может возникнуть конфликт с уже существующими играми, в которых может существовать переменная с таким именем.
Вводить проверку существования действия Byte, как я понял, не собирается. А жаль, это тоже могло бы пригодиться, да и язык стал бы более логичным и регулярным. Хотя, как бы назвать эту функцию?
По аналогии с OBJ и LOC это должно бы называться ACT, но это ключевое слово уже занято для оператора. Можно расширить функциональность CURACTS: если у этой функции задан параметр, то CURACTS(’действие’) возвращает текст указанного действия или пустую строку, если такого действия нет.

Великая вещь - логика!

Кстати, таблица далеко не все показывает :) Есть еще “переменные/массивы”. И есть операции: получение количества, вставка в позицию, удаление из позиции, получение элемента по позиции.

Следующее предложение касается управляющих конструкций.
Ветвление через вложенные IF:

IF … ELSIF … ELSIF… ELSE …END

разработчик уже обещал. Вещь полезная, т.к. разбор случаев – частая операция.

В QSP нет ни одного явного оператора цикла. Цикл приходится делать при помощи оператора перехода JUMP. Это не слишком сложно и авторы уже привыкли. Но можно добавить для наглядности явные конструкции «WHILE условие: … END» и, может быть, «REPEAT UNTIL условие» (как в Паскале).

Не помешал бы явный цикл с параметром (аналог FOR Бейсика). Чтобы не вводить много новых ключевых слов, его можно записать, например, так: (шаг «,С» может отсутствовать, тогда подразумевается шаг=1)

однострочный вариант -   FOR перем = А,B,C: операторы
многострочный вариант
FOR перем = A,B,C:
операторы
END

Специальных операторов для циклов не будет.

А что так?
Я уже и губы раскатал )

Хочется 2 вещи:
1) Поддержку абс. позиционирования картинок в обычном плеере, как в Аэре
2) Звуков в Аэре, как в обычном плеере.

А циклы, ELSEIF…это уже на любителя, можно жить и без них.

В идеале, еще хорошо бы отдельный оператор для фоновой музыки (которая будет проигрываться в цикле) и возможность отключения звуковых эффектов и фоновой музыки из меню плеера (причем - отдельно)

1. не будет.
2. будет, но вероятно только wav/mp3.

Для фоновой музыки есть библиотека. А проигрывать мелодию в цикле - элементарно.

Byte:

  1. не будет.

абЫдно..будут несовместимости плееров.

Byte:

  1. будет, но вероятно только wav/mp3.

А можно хотя бы еще MIDI? (уж больно компактный формат)

Byte:

Для фоновой музыки есть библиотека. А проигрывать мелодию в цикле - элементарно.

Да, но при исскуственном цикле всегда возможны перерывы в музыке на доли секунды, что будет несколько портить впечатление. Или нужно слишком часто проверять (порядка 5-10 раз в секунду)

Сомневаюсь, что задержка максимум в пол-секунды хоть как-то портит впечатление :)

Как смотреть заготовки в qgen (Aero Shell)? Указал путь к exe-файлу, написал в окне ‘Hello World’, сохранил в отдельную папку. При запуске просто черный экран.

BadgerM,
Для запуска qsp-файла в aeroshell нужно создать zip архив, для это задачи есть батник (см. http://qsp.su/misc/aero/aerodev.zip) полная инструкция для разработки под AeroQSP вот тут http://qsp.su/misc/aero/readme.txt

Ааа, то есть без архива никак =(. Я думал можно как-то проще >.< В ридми вроде так.
Ок, спасибо =).

Реализация перетаскивания объекта из локации в локации с возможностью бросить и оставить объект в любой локации - это тот еще гемморой. Этот момент необходимо доработать. Что если реализовать это дело как на примере с инвентарем. Например с помощью Команды DROP OBJ <<Стул>> оставляем предмет в локации. LOC OBJ - получаем список Объектов текущей Локации. TAKE OBJ <<Стул>> Забираем стул с Локации и он попадает в Инвентарь.

Ну в Общем что-то типа этого ))

Мда.. Думаю Вопросы от предложений на форуме - надо отдельно сделать. Одна общая куча - не то

Log in or Register to post comments.