Как сделать?
…
Jolly Roger:
Однако при обоих вариантах песня при смене индекса прерывается и начинается сначала…
запили проверку проигрывается в данный момент песня, или нет. Если проигрывается - не запускай мелодию, если не проигрывается - запускай. Не могу понять, в чём состоит сложность?
Можешь объяснить словами, чего ты пытаешься добиться? Чтобы на одной локации запускалась мелодия при одном значении переменной, и запускалась другая при другом значении, но при этом не раньше, чем кончится предыдущая? :/
Aleks Versus:
Можешь объяснить словами, чего ты пытаешься добиться? Чтобы на одной локации запускалась мелодия при одном значении переменной, и запускалась другая при другом значении, но при этом не раньше, чем кончится предыдущая?
Именно так.
Jolly Roger,
тот пример, что я дал выше, вполне с этим справится. Чуть-чуть его изменить.
Если передаёшь значение на локацию в аргументе в начале присваиваешь это значение какой-нибудь левой переменной:
$choose_music = $args[0]
На локации счётчике:
if $curloc='имя_локации' and isplay('музыка_A.mp3')=0 and isplay('музыка_B.mp3')=0:
! если мы на текущей локации и ни одна из мелодий не проигрывается:
if $choose_music='a': play 'музыка_A.mp3'
! по значению a проигрываем мелодию A
if $choose_music='b': play 'музыка_B.mp3'
! по значению b проигрываем мелодию B
end
Вот мой код:
Локация-счетчик: ‘COUNTER’
if $curloc=‘Place’ and isplay(’Content/Sound/A.mp3’)=0 and isplay(’Content/Songs/B.mp3’)=0:
! если мы на текущей локации и ни одна из мелодий не проигрывается:
if $choose_music=‘a’: play ‘Content/Sound/A.mp3’
! по значению a проигрываем мелодию A
if $choose_music=‘b’: play ‘Content/Sound/B.mp3’
! по значению b проигрываем мелодию B
end
Локация: ‘Place’
IF $ARGS[0]= ‘A’:
CLA
*CLR
$choose_music=‘a’
ACT ‘Переход на B’:
GS ‘Place’, ‘B’
END
END
IF $ARGS[0]= ‘B’:
CLA
*CLR
ACT ‘Переход на C’:
GS ‘Place’, ‘C’
END
ACT ‘Возврат на A’:
GS ‘Place’, ‘A’
END
END
Нужная мелодия (песня ‘a’) играет, все отлично. Но как только я нажимаю ‘Переход на B’, на полсекунды звук пропадает, затем песня ‘a’, вместо того чтобы продолжаться, начинается с самого начала. Что-то у меня не так, а что - не пойму…
Jolly Roger,
у тебя в одном месте написано “Songs”, а в других “Sound”.
Nex:
у тебя в одном месте написано “Songs”, а в других “Sound”.
Это я ночью постил, с устатку, вот здесь только и ошибся. Адреса в программе правильные, испробовал все способы, в том числе гибкий плейлист - результат один и тот же. Не играет, как надо, и все. Конечно, это не критично, музыку можно запускать на другой локации, а после заходить в эту. Просто хотелось по-своему :)
Jolly Roger,
я проверил этот код в чистом виде. Всё работает так, как ты хочешь. Проблема в другом. Найти ошибку без остального кода нереально. Может у тебя wait где-то стоит? Или сама мелодия кривоватая? :/
Буду разбираться тогда. Waitoв много где стоит… :) Спасибо!
Подскажите, пожалуйста, какое из условий более правильное:
IF a > b:
выражение1
ELSEIF a = b:
выражение2
ELSEIF a < b:
выражение3
END
ИЛИ
IF a > b:
выражение1
ELSEIF a = b:
выражение2
ELSE
выражение3
END
Jolly Roger,
обе правильные. Первая нагляднее.
А как можно облегчить работу с переменными, например, вот в такой вот ситуации:
if переменная=2 or переменная=3 or переменная=5 or переменная=10:
происходит что-то
и еще что-то,
и еще что-то
end
Можно ли сделать вот так, чтобы каждый раз не вводить “или переменная равна…”, а как нибудь типа
if переменная=2 or 3,5,10
RomaDova,
можно воспользоваться массивом.
! Где-нибудь заполняем массив.
KILLVAR 'закрытые_квартиры'
закрытые_квартиры[] = 2
закрытые_квартиры[] = 3
закрытые_квартиры[] = 5
закрытые_квартиры[] = 10
! В условии проверяем, находится ли значение в массиве.
IF ARRPOS('закрытые_квартиры', квартира) <> -1:
! Значение найдено в массиве.
'Квартира номер <<квартира>> закрыта. На звонок никто не ответил.'
END
Привет всем, да.
Возник у меня небольшой затык, который я совсем не понимаю как разрешить, имея достаточно скудные познания в программировании.
Итак, суть вопроса:
Мне нужна небольшая, 5на5, карта, примерно как в рогаликах.
…..
…..
…..
…..
…..
По которой можно будет перемещать объект - @
Логика подсказывает, что нужно сделать сетку координат по Х и У, по которым и будет перемещаться объект. Только вот как это визуально вывести на экран в необходимом мне виде - ума не приложу. Если кто сможет помочь советом - буду признателен.
Ryo,
это уже делали много раз до тебя, и вопрос этот не раз задавался.
В двух словах, для реализации тебе нужно будет использовать массивы и циклы.
Ни по тому ни другому у нас внятных обучающих статей нет, так как хорошие текстовые игры, как правило, обходятся без этих программистских изысков. Некоторую информацию ты можешь нарыть на форуме, в разделе “Разработчикам”, в разделе “Документация”.
Вот ссылка из FAQ: Использование массивов, многомерные массивы
Массивы и циклы - предмет общий для большинства языков программирования, поэтому в интернете полно статей, разъясняющих эти понятия. Разобравшись в понятиях, для QSP остаётся лишь изучить синтаксис и примеры использования, а далее уже пользоваться самостоятельно.
Nex, спасибо. Я понимаю, что делали, но найти ничего толком не смог, вот и решил спросить. Пойду копать интернет.