QSP-плеер: вопросы и предложения
Этим сообщением открывается тема вопросов и предложений касающихся QSP-плеера.
Во-первых, про убирание. ИМХО убирать ничего не следует, чтобы не потерять совместимость с предыдущими версиями. По той же причине изменять следует только в сторону расширения возможностей.
Итак, в нашей игре (программе) есть такие основные сущности: локации, предметы, действия. И основные средства для работы с ними:
| Локация | 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:
- не будет.
абЫдно..будут несовместимости плееров.
Byte:
- будет, но вероятно только 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 <<Стул>> Забираем стул с Локации и он попадает в Инвентарь.
Ну в Общем что-то типа этого ))
Мда.. Думаю Вопросы от предложений на форуме - надо отдельно сделать. Одна общая куча - не то