Зависит от того, как делали. Если использовали много IF-ов - то, скорее всего, просто выиграли в количестве вызовов функции fight, но проиграли в количестве действий внутри циклов (а if - относительно медленная вещь).
По поводу функции fight - да, параметров слишком много. Передача указателя на структуру по идеи ускорит работу в пару раз.
Потом, некоторые блоки условий можно сгруппировать. Например:
Код:
if (B1=1) and (B2i=1) then B2:=2
else if (B1=2) and (B2i=1) then B2:=1
else if (B1=3) and (B2i=1) then B2:=1
else if (B1=4) and (B2i=1) then B2:=1
можно переделать так:
Код:
if (B2i=1) then
begin
if (B1=1) then
B2:=2
else
B2:=1;
end;
И так далее. Можно использовать
case B2i of.
UPD:
Более того, сейчас заметил, что весь код
Код:
if (B1=1) and (B2i=1) then B2:=2
else if (B1=2) and (B2i=1) then B2:=1
else if (B1=3) and (B2i=1) then B2:=1
else if (B1=4) and (B2i=1) then B2:=1
else if (B1=1) and (B2i=2) then B2:=3
else if (B1=2) and (B2i=2) then B2:=3
else if (B1=3) and (B2i=2) then B2:=2
else if (B1=4) and (B2i=2) then B2:=2
else if (B1=1) and (B2i=3) then B2:=4
else if (B1=2) and (B2i=3) then B2:=4
else if (B1=3) and (B2i=3) then B2:=4
else if (B1=4) and (B2i=3) then B2:=3;
можно переделать в
Код:
if (B1<=B2i) then
B2:=B2i+1
else
B2:=B2i;
А таких блоков несколько.
И еще: я, конечно, в коде не разобрался особо, но уверен, что большинство IFов можно записать в циклы или сгруппировать друг с другом (хотя бы найти взаимоисключающие IFы в функции fight и поставить else), повысив читаемость кода и, возможно, увеличив скорость.
P.S. уже не по поводу оптимизации: через два месяца такие названия переменных вскроют мозг даже тому, кто этот код писал, не говоря уже о тех, кто пытается в нём разобраться. На будущее - лучше использовать более развёрнутые и осмысленные имена.
