Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Отход от заданной цели

тут можно задать вопрос по скриптингу
Post Reply
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Отход от заданной цели

Post by Venom »

Подскажите плс, как прописать следующий алгоритм.
Есть чар Х и есть чар Y.
Когда "Х" приближается к "Y", то "Y" - должен отходить, но не на заданную координату, а просто на несколько тайлов в зависимости от того, с какой стороны (W,S,N,E), подит чар "Х".
Т.е., если подходит со стороны W, то мы бежим на S или N или E и тд.


С подходом все выходит, а вот с отходом - нет (

Хелп.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

определяешь направление на цель (4 четверти, 8 направлений - исходя из координат своих и цели), потом отходишь на полученное направление -4, что и даст тебе провоположную сторону
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Re: Отход от заданной цели

Post by Macks »

Venom wrote:Подскажите плс, как прописать следующий алгоритм.
Есть чар Х и есть чар Y.
Когда "Х" приближается к "Y", то "Y" - должен отходить, но не на заданную координату, а просто на несколько тайлов в зависимости от того, с какой стороны (W,S,N,E), подит чар "Х".
Т.е., если подходит со стороны W, то мы бежим на S или N или E и тд.


С подходом все выходит, а вот с отходом - нет (

Хелп.
Прописать фиксированные координаты и не мучатся.

Каждый отходит в свой угол.

Как в боксе.
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Post by Venom »

Vizit0r wrote:определяешь направление на цель (4 четверти, 8 направлений - исходя из координат своих и цели), потом отходишь на полученное направление -4, что и даст тебе провоположную сторону
А набросать козу скрипта, если не затруднит ?
Буду премного благодарен.
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Post by Macks »

Venom wrote:
Vizit0r wrote:определяешь направление на цель (4 четверти, 8 направлений - исходя из координат своих и цели), потом отходишь на полученное направление -4, что и даст тебе провоположную сторону
А набросать козу скрипта, если не затруднит ?
Буду премного благодарен.
Благодарности Vizit0r в перед.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

примерный алгоритм я тебе и так набросал.
писать скрипт - нет.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

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

Code: Select all

CalcDir(Xfrom,Yfrom,Xto,Yto: integer): byte;
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
MeLFiS
Novice
Novice
Posts: 147
Joined: 02.02.2008 12:21

Post by MeLFiS »

Vizit0r wrote:хы, все уже сделано оказывается. спустя год уже и не помнишь, что было сделано.

Code: Select all

CalcDir(Xfrom,Yfrom,Xto,Yto: integer): byte;

а как работает можна поподробнее ?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

вычисляет направление от одной точки к другой. что ж сложного-то?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Post by Macks »

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 с каждым шагом.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

все гораздо проще - вокруг чара 8 клеток - 4 прямых направления, 4 диагональных. шагнуть можно в любом (если свободна клетка), но если направление чара не совпадает с тем, куда надо идти, то потребуется 2 шага - один для поворота в заданном направлении, второй - для шага.

Macks - вот для этого-то и существуют поиски пути с беганием, чтобы избавить пользователей от таких не нужных подробностей
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Post by 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;

Примерно так.
Post Reply