Как сделать?
…
if hour >= 24:
:loophour
day = day + 1
week = week + 1
hour = hour - 24
if hour >= 24: jump 'loophour'
end
Проверка и jump там на всякий случай, мало ли, вы двое суток спали.
Кто-нибудь делал алгоритм поиска пути A* на qsp?
Интересует именно версия по обходу графа, а не двухмерной сетки.
Локации с переходами между ними это же граф.
svandrus,
1. @@@@CODEBLOCK0@@@@
2. Можешь воспользоваться модулем для работы с событиями по таймеру.
Axil,
а что значит week = week + 1 ?
week - день недели (0-7)
Мне просто так “hour = hour mod 24”, не годится - я там еще и события вызываю которые происходят раз в день.
Тогда сколько дней пройдет - столько раз собития вызовутся.
Я делал на основе этого примера, только без учёта дней, т.е. когда hour >= 24: day += 1
Отсюда и растут ноги у 28 часов.
Вот ты сам себе и ответил. Делай как в примере, тогда всё будет работать.
Axil:
Кто-нибудь делал алгоритм поиска пути A* на qsp?
Интересует именно версия по обходу графа, а не двухмерной сетки.
Локации с переходами между ними это же граф.
Почему именно Астар? Не лучше ли использовать для этой цели алгоритм Дейкстры?
Привет, я только начинаю разбираться в qsp, и, может быть, это глупый вопрос, но все-таки.. есть ли какая команда, чтобы можно было присвоить переменной имя данной локации (именно, как они называются в левом столбце)? Фактически это должно быть так: например, герой хочет выпить магический напиток и побродить по лабиринтам внутри своей головы, но когда добредет, он должен вернуться туда же, где он решил этот напиток выпить, пусть даже в пучину боя. т.е. выпивая и уходя в лабиринт мы прописываем $locback = ‘??’, а когда лабиринт кончается, пишем - gt ‘<<$locback>>’ . Собственно, и вопрос в том, что нужно ставить вместо ?? . Уточню, что, конечно, проблему можно решить, если самостоятельно присваивать имена локациям при переходах в какой-нибудь переменной типа “locname”, но это не подходит. Надеюсь, понятно, объяснил. Спасибо!
Гениально и просто. Благодарю!
evp:
Почему именно Астар? Не лучше ли использовать для этой цели алгоритм Дейкстры?
Хорошо, а алгоритм Дейкстры кто-нибудь на qsp реализовывал?
Axil, это не проблема. Тебе нужно готовое решение или ты готов сам потрудиться?
Если второе, то только начни, а нужна будет помощь - я помогу.
Поиск кратчайшего пути между городами
Правда, я в нём не разбирался.
Пример хороший. И в большинстве случаев дает нужный результат. Но у него есть проблемка.
Вот иллюстрация схемы городов и дорог в этом примере:
В примере ищется путь из города 4 в город 7.
Результат:
Из Город 7 в Город 4.
Город 7; Город 0; Город 2; Город 4
Однако, если мы удалим дорогу из 0 в 7, то в город 7 приехать нельзя - это единственная дорога, связывающая 7 с другими городами. Делаем это: комментируем строки 23 и 35 в локации 1:
!gs 'road',0,7
...
!gs 'road',7,0
Запускаем. И… результат не изменился. По-прежнему:
Из Город 7 в Город 4.
Город 7; Город 0; Город 2; Город 4
Надо править пример, исправлять ошибку в алгоритме.
evp,
ошибка не в реализации алгоритма Дейкстры, а в алгоритме вывода посещённых городов. Я её исправил, залил обновлённый файл.
snail,
Про время - предложенный модуль хорош, но сложноват для меня. Свою задачу сформулировал так - возможность пове.. управлять течением времени и решил немножко по-другому:
act 'Остановись мгновение...':
delact $selact
SETTIMER 999999
act 'Реал-тайм':
delact $selact
SETTIMER 500
gt $curloc
end
end
Получил в итоге иллюзию паузы и вопрос: каким может быть предельное значение SETTIMER?
P.S. Сделал SETTIMER -1 и оно замерло. Надолго ли?