public override void SiehtFeind(Ameise ameise) { int alpha = Richtung; int delta = Ziel != null?getA(a, Ziel) : Richtung; int dif = Math.Abs(alpha - delta); if (dif <= 20) { int beta = getA(a, ameise); int phi = Math.Abs(beta - alpha) % 360; int r = phi > 180 ? 360 - phi : phi; int sign = (alpha - beta >= 0 && alpha - beta <= 180) || (alpha - beta <= -180 && alpha - beta >= -360) ? 1 : -1; r *= sign; if (-30 < r && r < 30) { if (Ziel != null) { if (getD(a, Ziel) < getD(a, ameise)) { return; } } int[] Weg = new Umleitung(a, ameise).Weg; evading = true; BleibStehen(); DreheUmWinkel(Weg[0]); GeheGeradeaus(Weg[1]); if (Weg[0] == 0 && Weg[1] == 0) { if (bau != null && getD(a, bau) < 700) { SprüheMarkierung(AnzahlFremderAmeisenInSichtweite + AnzahlAmeisenDesTeamsInSichtweite, 700); } } } } else { Sprint(Ziel != null ? Ziel : bau); } }
public override void SiehtFeind(Ameise ameise) { int alpha = Richtung; int beta = getA(a, ameise); int phi = Math.Abs(beta - alpha) % 360; int r = phi > 180 ? 360 - phi : phi; int sign = (alpha - beta >= 0 && alpha - beta <= 180) || (alpha - beta <= -180 && alpha - beta >= -360) ? 1 : -1; r *= sign; if (-30 < r && r < 30) { if (Ziel != null) { if (getD(a, Ziel) < getD(a, ameise)) { return; } } int[] Weg = new Umleitung(a, ameise).Weg; BleibStehen(); DreheUmWinkel(Weg[0]); GeheGeradeaus(Weg[1]); } }