Преобразование типов в QSP

Эта статья поможет вам разобраться в таком сложном вопросе, как преобразование типов в операции присвоения, или в выражениях.

В QSP существует всего два типа значений: числовой и текстовый. Числовой означает любое целочисленное число в пределах от -2147483648 до 2147483647; а текстовый — любую строку текста (нет, на самом деле любую. Ограничения для строк — 2 Гб текста).

Вот как выглядят такие значения:



Для хранения значений мы используем переменные или массивы. И точно так же массивы и переменные (далее просто — переменные) бывают двух типов.

Чтобы записать в числовую переменную числовое значение, мы просто пишем имя переменной, знак = и число:



Чтобы записать в текстовую переменную текстовое значение, перед именем переменной мы обязательно ставим знак $.



Если мы попытаемся записать в текстовую переменную числовое значение, плеер автоматически преобразует число в текст, и в текстовой переменной окажется текстовое значение:



Если мы попытаемся присвоить числовой переменной текстовое значение, плеер попытается преобразовать текстовое значение в числовое, но если преобразование невозможно, на экране появится ошибка.


только для команды 2 не удастся выполнить преобразование типа


так выглядит ошибка, если попытаться засунуть текстовое значение в числовую переменную

Всё становится гораздо интереснее, если мы имеем дело не с отдельными значениями, а с выражениями.

Например, если мы попытаемся сложить два числа, то результатом сложения будет третье число:



Если мы попытаемся «сложить» две строки, то мы их просто «склеим» (в программировании это называется конкатенация):



Но что будет, если мы попытаемся сложить число и строку?

А тут произойдёт вот что.

Если хотя бы одно из значений в выражении — числовое, плеер попытается все значения преобразовать в числовые и вычислить выражение:



Если преобразование не удастся, то выполняется конкатенация:



Строки можно только «складывать» или сравнивать, поэтому если вы попытаетесь проделать с ними какие-то другие штуки, плеер выдаст ошибку о несоответствии типов данных:



Однако, если возможно преобразование всех строк в числа, то можно сделать так:



Таким образом, плеер обязательно преобразует тип к необходимому, если это возможно, особенно для операций присвоения.

Вам не нужно строго следить за тем, какие типы значений вы используете в выражениях, однако старайтесь избегать выражений, в которых математические операции применяются к строкам.

Старайтесь не использовать строковые и числовые значения в одном выражении, либо приводите их к требуемому типу с помощью функций $str и val:



Не забывайте пользоваться подвыражениями, если нужно вставить значение в строку:



Оригинал статьи в вк.

Паровозик-6, опять обзоры

«Дальше», techniX
Игры про то, как мы бежим-бежим-бежим, почему-то популярны на этом паровозике. И тут то же самое. Нас сажают на мотоцикл, выдают ценный кейс и мы пытаемся этот кейс куда-то доставить. Процессом мы не управляем, единственная кнопка в игре это «Дальше». Однако история не линейная, как можно подумать. Поездка может закончиться на любом из шагов, это зависит от («нужно всего лишь...» ©)…

В целом плюс автору за идею «геймплея». Но жирный минус за то, что механика эта затмевает полностью саму историю, пусть простенькую. Когда разгадываешь секрет, перестаёшь читать текст и игра превращается в тетрис. И ещё не понравилось, что так и не сказали, чего это я такое вёз.

«Потвора — История первая», MAlishka
Мелкая игра-рассказ на Инстеде. В деревне недавно появилась страшная бабка и к ней укатился мячик местных мальчишек. Собственно, это и есть завязка. Далее, традиционным для каноничного Инстеда методом, тыкаем на всё и применяем детей тоже на всё подряд. Это было прохождение. Простите за спойлеры.

Игра короткая. Из плюсов — хороший текст, который не портит даже некоторое количество стилистических и орфографических ошибок. Из минусов — тема вообще не раскрыта. Игра вроде как про Потвору, но самой Потворы в игре нет (кстати, я глянул, это правда такое имя). Скудное описание старушки, развешивающей свежевыстиранное бельё, как-то не тянет на раскрытие персонажа. Кто она, почему переехала в эту деревню, правдивы ли (хотя бы отчасти) слухи — нет ни-фи-га. И это расстраивает, да.

«Библиотека 2: Сигнал», Андрей Лобанов
О, а вот это крупняк. Ну, паровозный крупняк. Игра с более чем одной загадкой, сюжетом и неплохим текстом. Является продолжением предыдущей «Библиотеки», которую я так и не прошёл из-за бага. Но, в принципе, знакомство с ней не обязательно. И так всё понятно. Восстание машин, мы в меньшинстве и надо срочно предупредить человечество, чтобы оно вмешалось и немедленно прекратило безобразие.

Мне понравилась игра. Там есть сюжет, атмосфера и в неё интересно играть. Геймплей стандартный инстедовский, тёплый ламповый. Непонятно только, зачем нужен Леонид. Но наверное для атмосферы, или он перекочевал из предыдущей игры и его было жалко бросить.

К недостаткам отнесу крайне назойливый звук клика (можно выключить), а также загадку с ящиком. Не надо так делать, я считаю. Но, в любом случае, игру рекомендую к прохождению, не пожалейте 15-20 минут. Один совет — записывайтесь почаще.

QSP как язык программирования

Добрый день!

Меня спрашивают, почему у QSP свой язык программирования и почему бы не использовать что-либо существующее (Python, например). На мой взгляд, вопрос вполне понятный, особенно для тех, кто не знаком (или плохо знаком) с QSP.
Причин несколько.

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

Ну и, конечно же, изначально хотелось поэкспериментировать с синтаксисом и интерпретацией :)

Паровозик-6, ещё обзоры

«Стрела смерти (часть 1)», Владимир Трофимчук
Это, друзья мои, парсер на фурке. Мы играем за неизвестного, который оказался рядом с каким-то дворцом и мёртвым посланником (куда и откуда он был послан не упоминается). Ну и начинаем бродить по окрестностям, клептоманя потихоньку.

Автор, без сомнения, вели́к. По-моему, вообще трудно представить платформу, менее приспособленную для написания парсера, чем урка. Но с помощью декораторов и такой-то матери автор с ней справился. Парсер получился примитивным, но вполне функциональным. Чёрт, там даже есть подобие базовой библиотеки, игра корректно отрабатывает ситуации с «ответами по умолчанию»!
Читать дальше

Паровозик-6, обзоры

Я пришёл к выводу, что паровозные игры лучше, проще и легче обозревать оптом. Поэтому буду подбивать своё знакомство с железнодорожным творчеством именно в этом формате — один-три абзаца на игру. Поехали.

«Татуировка», Protos365
Выбираем татуировку, а потом, в зависимости от нашего выбора, нам бьют морду гопники, призна́ют своим в байкерском клубе или бросает жена. Ну или не бьют, не признают и не бросает. Зависит от татуировки. Примечательным является то, что больше двух кликов в этой игре сделать невозможно.

«Escape», NickoAilus
Игра на куспе на тему космической фантастики. Безымянный главный герой вдруг остался один на корабле и нужно быстро починить реактор и сколхозить топливо из подручных средств, иначе всё. Причём в наличии даже обратный отсчёт до момента «Ж» в реальном времени. Хоть он и не особо влияет на прохождение — времени достаточно.

Управление немного неудобное, как по мне. Загадка с сейфом — из тех, которые непонятно как решать даже после того, как уже решил. Причём я честно пытался думать. Вообще, конечно, трудно представить что кто-то станет ставить на сейф подобный замок. Но да ладно, у нас тут ифня и паровозик. В целом, игру прошёл не без удовольствия, автор старался и спасибо ему за это.

«Редактор карт», Гаяр
У меня была робкая надежда, что это игра про картографа, но нет. Это какая-то утилита рисования карт на куспе, причём ещё и с багами. Еще раз скажу: если на паровоз можно присылать что угодно, это ещё не значит, что нужно реально присылать что угодно. Иногда лучше ничего не сказать, чем сказать ничего.

«Нечеловечность», Pete Pr
Онлайн-игрушка на квестбуковском движке. В качестве студента мы устраиваемся в лабораторию, наблюдать за искусственными людьми, которые оказываются теми ещё гадами. Сюжетом и качеством текста игра не блещет, зато в ней довольно большая вариативность. Я прошёл её три раза и каждый раз получал новый результат, хотя для главного героя всё равно всё закончилось печально. Я не уверен, есть ли в этой игре вообще хорошая концовка.

В одной из веток мне внезапно пришлось угадывать картину конкретного автора из десятка разных картин. Я не угадал и мне оторвали голову. Весьма поучительно, я считаю. Низкий культурный уровень может быть смертелен. В целом, как вагончик, вполне себе игра.

П6: Солянка-2

«НЕБО, МОРЕ, ЛЮБОВЬ», Korwin
Корвин прислал на Паровозик ремейк своей старой игры 2004 года. Я не против, потому что в оригинал не играл. Сюжет довольно прост: вы попали в шторм на яхте, практически спаслись, но нет. И вот теперь ваша яхта тонет нафик и вам нужно что-то предпринять. А именно, схватить первые попавшиеся вещи и попытаться со всей этой фигнёй взлететь уплыть. Да так, чтобы вас потом ещё и спасли.

В игре присутствуют хороший текст, картинки и настройка сложности, которая влияет на то, получится у вас развязать ночью мокрую верёвку или нет. Я прошёл игру два раза, на «средней» сложности и на «реалистичной». Оба раза спасся на плоту. Забавно то, что утонуть на яхте не очень получается. Я, например, пытался отвязать плот, в общей сложности, раз двадцать подряд. Игра меня старательно пугала, мол, вот-вот всё, спасайся скорее. Но нет. В итоге на «реалистичной» сложности развязать верёвку не получилось, я сходил в каюту за ножом (игра прям истерила, что щасвсёумрёшь!) и отрезал эту чёртову верёвку. Потом меня нашли и спасли. Мне даже консервы не пригодились.

В общем, понравилось. Можете попробовать спастись другими путями, игра вполне стоит того, чтобы провести за ней минут двадцать.

«Ринд-Элесс», StalkerSleem
Какой-то Драконий Покер на Аперо. Похоже на карточную игру со своими мастями и существами, надо собирать себе колоду, а потом пытаться выиграть у ИИ или реального игрока, который тоже должен в этот момент зайти на сайт Аперо и играть в эту игру. Такая вот демка многопользовательских возожностей Аперо, насколько я понимаю. Также можно оставлять записи в гостевой книге. Немного не моя тема, поэтому колоду собрал как попало и, конечно же, проиграл.

«Мистер Н. и ванная комната», Виталий Блинов
Неплохой менюшный пазл-фест на самодельной JS-платформе. Играем, что характерно, за Мистера Н. (Мистер — это имя, если что, оно всегда в игре пишется с большой буквы) в ванной комнате, из которой у него никак не получается выйти. То есть налицо игра «выберись из закрытой комнаты».

Также в наличии хороший текст, юмор и вполне терпимое управление на ссылках. В общем, всё бы хорошо, но в какой-то момент игра стала напоминать мне фильм «Начало» со всеми этими «отражение отражения в отражении» и мой мозг сломался. К такому меня жизнь не готовила. Так что я не смог. Но, возможно, ваше кунг-фу лучше моего, попробуйте.