Работа над ошибками

В чем минус эволюционной разработки?

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

Минус в том, что могут появляется ошибки(глюки) на стыке двух модулей, т.е. по отдельности они нормально работают, а вот их объединили - и не работают оба.

В моем случае - появился глюк при исполнении команды retreat. Команда выполнялась в случае гибели персонажа или его победы в лабиринте (выполнения условий).
Код команды была примитивен - проверялись условия, и создавалась событие LEAVE_MAZE (для Flash составляющей) и в структуре TUser переменная mazeid обнулялась (игрок возвращался на локацию из лабиринта).

Так вот в этот примитивный код закралась критическая ошибка, которая выгружала серверную часть.
Искал довольно долго, раз двадцать бесстрашный игрок 123 гиб от руки ветерана - дабы по логам вычислить глюк.
Собственно вот глючный код:

TCreatureList::iterator cc;

for (TCreatureList::iterator cc=m->creatures.begin();cc!=m->creatures.end();cc++)
if (cc->Id == userid) break;

if (cc==m->creatures.end())
{
...
ошибка - нет игрока в лабиринте
}
... далее код

Тут проверяется есть ли персонаж в стеке существ в лабиринте (TMazeMap *m) и брался итератор на персонаж (чтобы проверить его HP или флажок WinBattle).
Короче самые глазастые поняли что переменная cc объявляется дважды до цикла и внутри.

Причем сложность отладки в том что, следующее выражение срабатывало и не выпадало, хотя было уже вне цикла:
if (hp<=0 || cc->WinBattle)

Еще была одна странность, хоть в самом начале серверной части происходила рандомизация srand((int)time(0)), то лабиринты всегда строились одинаковые, т.к. очевидно переменная для rand() своя в каждом отдельном потоке, либо вообще не safe-thread (что хуже, но не критично).

Спас вызов сброса перед каждым построением лабиринта.

Комментарии

SDA

Спасибо, интересно! Будем читать дальше.
_http://infoprog.tk – программирование для начинающих и программирование для чайников

info

И вам спасибо!
Листал ваш сайт info..tk и много плакал.
Смешать VB, HTML, PHP и MySQL в коктейле "языки программирования" может не каждый ;)
Может стоит более внимательно выбирать контент? Или площадки для спама?

Ага

Креативно, а не только познавательно, спасиб

спамерам

Спамеры. вы задолбали уже