Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
Отход от заданной цели
Отход от заданной цели
Подскажите плс, как прописать следующий алгоритм.
Есть чар Х и есть чар Y.
Когда "Х" приближается к "Y", то "Y" - должен отходить, но не на заданную координату, а просто на несколько тайлов в зависимости от того, с какой стороны (W,S,N,E), подит чар "Х".
Т.е., если подходит со стороны W, то мы бежим на S или N или E и тд.
С подходом все выходит, а вот с отходом - нет (
Хелп.
Есть чар Х и есть чар Y.
Когда "Х" приближается к "Y", то "Y" - должен отходить, но не на заданную координату, а просто на несколько тайлов в зависимости от того, с какой стороны (W,S,N,E), подит чар "Х".
Т.е., если подходит со стороны W, то мы бежим на S или N или E и тд.
С подходом все выходит, а вот с отходом - нет (
Хелп.
определяешь направление на цель (4 четверти, 8 направлений - исходя из координат своих и цели), потом отходишь на полученное направление -4, что и даст тебе провоположную сторону
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Re: Отход от заданной цели
Прописать фиксированные координаты и не мучатся.Venom wrote:Подскажите плс, как прописать следующий алгоритм.
Есть чар Х и есть чар Y.
Когда "Х" приближается к "Y", то "Y" - должен отходить, но не на заданную координату, а просто на несколько тайлов в зависимости от того, с какой стороны (W,S,N,E), подит чар "Х".
Т.е., если подходит со стороны W, то мы бежим на S или N или E и тд.
С подходом все выходит, а вот с отходом - нет (
Хелп.
Каждый отходит в свой угол.
Как в боксе.
Благодарности Vizit0r в перед.Venom wrote:А набросать козу скрипта, если не затруднит ?Vizit0r wrote:определяешь направление на цель (4 четверти, 8 направлений - исходя из координат своих и цели), потом отходишь на полученное направление -4, что и даст тебе провоположную сторону
Буду премного благодарен.
хы, все уже сделано оказывается. спустя год уже и не помнишь, что было сделано.
Code: Select all
CalcDir(Xfrom,Yfrom,Xto,Yto: integer): byte;
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Vizit0r wrote:хы, все уже сделано оказывается. спустя год уже и не помнишь, что было сделано.Code: Select all
CalcDir(Xfrom,Yfrom,Xto,Yto: integer): byte;
а как работает можна поподробнее ?
Они же не знают протокол.Vizit0r wrote:вычисляет направление от одной точки к другой. что ж сложного-то?
Не знают что смена направления и движения это одна и та же команда.
Для них координаты на карте это максимум.
Попробую рассказать.
1. Есть две координаты X и Y
2. Есть 8 направлений от 0 до 7
3. У любого направления есть противоположное направление.
4. При смене направления координаты не меняются.
5. При движении в существующем направлении, для каждого направления координаты меняются по разному.
Примеры:
1.
Направление 0 - чар лицом к началу координат Y
При движение координата Y уменьшается на 1 с каждым шагом, координата X не изменяется.
2.
Направление 1 - чар повернулся на 45 градусов по часовой стрелке.
При движение координата Y уменьшается на 1 с каждым шагом, координата X увеличивается на 1 с каждым шагом.
все гораздо проще - вокруг чара 8 клеток - 4 прямых направления, 4 диагональных. шагнуть можно в любом (если свободна клетка), но если направление чара не совпадает с тем, куда надо идти, то потребуется 2 шага - один для поворота в заданном направлении, второй - для шага.
Macks - вот для этого-то и существуют поиски пути с беганием, чтобы избавить пользователей от таких не нужных подробностей
Macks - вот для этого-то и существуют поиски пути с беганием, чтобы избавить пользователей от таких не нужных подробностей
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Это понятно, но что бы вычислить координаты куда двигаться в обратном от другого чара направлении, нужно понимать что такое направление и как оно коррелирует с координатами.Vizit0r wrote:Macks - вот для этого-то и существуют поиски пути с беганием, чтобы избавить пользователей от таких не нужных подробностей
Кстати проблема решается гораздо проще.
Допустим Xm Ym - мои координаты, Xc Yc - координаты чара от которого нужно отойти, X Y - искомые координаты.
if Xm > Xc then X = Xm + 2 else X = Xm - 2;
if Ym > Yc then Y = Ym + 2 else Y = Ym - 2;
Примерно так.