Приветствую.
Извиняюсь за спам, но тут уже начали писать алгоритмы определения новайсов :) Позволте и мне вмешаться в этот спор.
По первой части (до секретной функции): Все нормально, только вот как быть, если я начну вдруг с самого первого хода биться с расой, оказавшейся около меня? И если эта раса окажется матерым ветераном, и мы разнесем друг друга в пух и прах :) По секретной функции: > mov bx, 0; > mov cx, NumberOfPlanets > mov dx, NumberOfStupiedQuestions > lea si, PlayerTechs > m1:add ax, [si] странно мы как-то считаем ... техи храняться в массиве, из которого ты извлекаешь их по четвертинкам, причем сначала дробную часть, а потом еще и мантиссу считаешь :) Нелогично как-то ... > cmp ax, 4 > jbe m2 > inc bx > add bx, 48 а не легче сделать add bx,49? > mul dx > m2:cwd > div bx а вот здесь вроде бы exception выскакивает на первой итерации, поскольку в стершей части real у тебя 0 хранится, а проверяешь ты below or equal, и bx = 0. > add bx, dx > sub bx, ax > inc si > loop m1 > add K, bx вот непонятно мне: пишешь на C, и делаешь вставки из asm. Зачем? На C код хоть как-то читается :) Хотя идея хороша - писать хэш-фукнцию. Только такие функции циклы имеют :) Если хочешь написать что-нибудь полезное, то напиши dll для определения номеров планет, между которыми может лететь неизвестная группа. Математика такая: a = (x2-x1,y2-y1) = (ax,ay) - направляющий вектор. n = (ay, - ax) - вектор нормали. Ax + By + C = 0 - уравнение прямой, где A = ay, B = -ax расстояние от прямой до точки (x3,y3) d = (Ax3 + By3 + C)/sqrt(A*A+B*B) Считаем точку принадлежащей прямой, если d<=0.005 Я хоть это в свой будущий клиент вставлю :) Кстати, если кто хочет помочь, то opengalaxy.metacom.ru
С уважением, Splain.
З.Ы. У меня на работе винт накрылся, так что не обижайтесь, если долго отвечать не буду на письма.
З.З.Ы. Народ, с кем у меня договора, сообщите до какого хода, а то все пропало :(
|