22.11.2012 / 13:46 | |
myname Пользователь Сейчас: Offline
Имя: Аскалайт Регистрация: 12.10.2011
| CTygeHT, ябнатвоеместевыложилсорцплим сорц гляну?
|
22.11.2012 / 14:22 | |
Nokia_372Oc Пользователь
| Нужна помощь! Я создал буливую переменную bot_iq, она отвечает за интелект бота и её надо исправить. Есле она true, то бот гоняется за мной всегда, а надо при определённом растоянии. Смотрите. ...
if (bot_iq == true) {
if (bot_x <= x)
{bot_right = true;}
if (bot_x >= x)
{bot_left = true;}
if (bot_y <= y)
{bot_down = true;}
if (bot_y >= y)
{bot_up = true;}
}
...
Как зделать чтобы бот доганял героя только тогда, когда их координа на >= или <= 50? И можно bot_x, bot_y заменить на bot.getX(), bot.getY(). Можно? Или не будет ошибка? P.S. Зарание спасибо! Изменено Nokia_372Oc (22.11 / 14:25) (всего 1 раз) |
22.11.2012 / 14:44 | |
myname Пользователь Сейчас: Offline
Имя: Аскалайт Регистрация: 12.10.2011
| Nokia_372Oc, формула нахождения расстояния между двумя точками: s=Math.sqr((x2-x1)(x2-x1)+(y2-y1)(y2-y1)); да можно bot_x, bot_y заменить на bot.getX(), bot.getY()
|
22.11.2012 / 14:46 | |
ckrocket Пользователь Сейчас: Offline
Имя: Miha Откуда: Петербург Регистрация: 31.05.2012
| warlock, про многопотчность не читал(если читал, то давно), но посмотрел в одном исходнике, и реализовал так: Открыть спойлер Закрыть спойлер public class Paint extends Canvas implements Runnable{
Thread thr = new Thread(this);
public void paint(Graphics g){
//...
}
public void run(){
//...
}
}
|
22.11.2012 / 14:52 | |
myname Пользователь Сейчас: Offline
Имя: Аскалайт Регистрация: 12.10.2011
| Nokia_372Oc, если у бота есть такие методы. ЗЫ ты оберни код передвижения бота в if(s<=50){ код перемещения бота онлайн } else { код перемещения офлайн } кстати можеш добавить инерции: 1) бот не обращает на тебя внимания пока вы не станете слишком близки, 2) бот ёщё бежит некоторое время за вами даже в оффлайн.
Изменено myname (22.11 / 14:56) (всего 1 раз) |
22.11.2012 / 14:59 | |
Nokia_372Oc Пользователь
| myname, Ну допустим я добавлю новый импорт чтобы матиматичеркие функции работали и впешу этот код, s=Math.sqr((x2-x1)(x2-x1)+(y2-
y1)(y2-y1));
как я понял с заменой x2,x1,y2,y1 на координаты бота и героя. И что мне делать дальше? Объясни плиз! |
22.11.2012 / 15:04 | |
DominaN Пользователь Сейчас: Offline
Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
| Nokia_372Oc, Тут есть один нюанс - getX/getY возвращают координаты в экранном пространстве. То есть, предположим, у тебя герой бежит от моба, при этом карта прокручивается, а герой остается всегда посередке. В мировых координатах его позиция меняется, а вот в экранных нет. Поэтому в любом случае стоит использовать абсолютное позиционирование
|
22.11.2012 / 15:04 | |
myname Пользователь Сейчас: Offline
Имя: Аскалайт Регистрация: 12.10.2011
| Nokia_372Oc, да, замениш координаты и ставиш перед кодом перемещения. if (s<=50) { код следования бота за героем } else { код хаотического движения }
|
22.11.2012 / 15:05 | |
Nokia_372Oc Пользователь
| myname, Ясн. Тоест заменить потом bot_x >= x на s>=50 и также с bot_x <= x, bot_y >= y... Вобщем всё меняем на s >= и <= 50. Я правельно понял?
|
22.11.2012 / 15:08 | |
myname Пользователь Сейчас: Offline
Имя: Аскалайт Регистрация: 12.10.2011
| Nokia_372Oc, желательно бота сделать медленей и измерять координаты относительно левого верхнего угла карты как сказал DominaN.
|