паук

Ответный удар

Дабы тупо не гибнуть в каждой арене с пауком, пришлось сделать возможность герою атаковать врагов.

В клиентской флэшке изменений по минимуму - в функции обработки мышки:
Ранее было:
if (tx==_root.heroX && ty==_root.heroY)
_root.showBook(1);
else
_root.moveHero(tx, ty);

стало:
if (tx==_root.heroX && ty==_root.heroY)
_root.showBook(1);
else
if (_root.enemySquare(tx,ty) && dx<=1 && dy<<1)
_root.strikeHero(tx,ty);
else
_root.moveHero(tx, ty);

Атака паука

Собственно не только паука, а любого враждебного существа.
Для ее реализации переписываем функцию bool computerTurnCreature(TMazeMap *m,int creatureid)
{
logaccess(16,"computerTurnCreature(%d)",creatureid);
TMazeCreature *c = getCreature(m,creatureid);
if (!c) return false;
vector<TMazeCreature *> crt;
if (findCreature(m,c,&crt)) {
float iam = Fast_Distance( c->x,c->y);
float min;
int index=0;
for(int i=0;i<(int)crt.size();i++) {
float tmp=Fast_Distance(crt[i]->x,crt[i]->y) - iam;
if (tmp<0) tmp*=-1.0;
if (i==0) min=tmp;

Паук пришел-2

Вообще перед тем как я начал внедрять «паука», я сильно заблуждался –считая, что код и меня уже сделан, что можно внедрять уже существ, кроме базового (героя).
Но оказалось, что зря казалось. Пришлось переписывать и искать баги.

Как бы, в базовом Flash ролике, уже обрабатывалось событие INS_CREATURE (при загрузке героя) – оно помещала в базовые массив классов creatureList - id существа и его координаты.

Следом вызвалась функция insertCreature, в которой уже пришлось делать первые изменения:if (plid==_root.userid)
creature.mcname = "you_hero";

И тут пришел паук

Почти как в фильме, паука нарисовал не я – а неплохой художник ForEveR aka Сергей, причем совершено добровольно, за это ему респект и уважуха.

И собственно было решено паучка протестить его и запустили в маленький лабиринт с игроком. Тут возникла проблема номер №1, для тестовой арены генерился маленький лабиринтик 10x10, и он не сгенерился, загружая проц на 90-100% комп задумался.

Правки

Избавился от пересчета нужно ли обновлять карту – теперь при открытии карты с сервера, запоминаются координаты, что с этого положения карта уже запрашивалась.
Пометка сохраняется в массиве watchmap.

На сервере связи с этим сделал, чтобы карта открывалась только по обозреваемой территории – алгоритм тут.

Если я не найду художника - то уничтожу мир

... своими художествами.

Собственно идея нарисовать паука в качестве явного антигероя была давно, и были даже наброски .

Но одно дело кривой лапой накорябать на бумаге, а другое на Flash если тебе при рождении медведь наступил на обе руки.
А еще нужно нарисовать анимацию движения и удара, т.к. на то он и антигерой, чтобы атаковать героя.

RSS-материал