private int Mini(int depth, int alpha, int beta, Fields.Field field) { if (depth == 0) { return Valuation(field, AIPlayer); } int localBeta = int.MaxValue - 1; for (int i = 0; i < field.Length; i++) { if (field.IsFieldEmpty(i)) { field.SetField(i, AIPlayer); int wert = Max(depth, alpha, beta, field); field.SetField(i, ' '); if (wert < localBeta) { if (wert < alpha) { bestZug = i; return wert; } localBeta = wert; if (wert < beta) { beta = wert; } } } } return localBeta; }
private int Max(int depth, int alpha, int beta, Fields.Field field) { if (depth == 0) { return Valuation(field, HumanPlayer); } int localAlpha = int.MinValue + 1; for (int i = 0; i < field.Length; i++) { if (field.IsFieldEmpty(i)) { field.SetField(i, HumanPlayer); int wert = Mini(depth - 1, alpha, beta, field); field.SetField(i, ' '); if (wert > localAlpha) { if (wert > beta) { bestZug = i; return wert; } localAlpha = wert; if (wert > alpha) { alpha = wert; } } } } return localAlpha; }
private int Mini(int depth, Fields.Field field) { int zugValue = 0; int discovered = int.MaxValue - 1; for (int i = 0; i < field.Length; i++) { if (field.IsFieldEmpty(i)) { field.SetField(i, AIPlayer); if (depth <= 1) { zugValue = Valuation(field, AIPlayer); } else { zugValue = Max(depth - 1, field); } field.SetField(i, ' '); if (zugValue < discovered) { discovered = zugValue; bestZug = i; } } } return discovered; }
private int Max(int depth, Fields.Field field) { int zugValue = 0; int discovered = int.MinValue + 1; for (int i = 0; i < field.Length; i++) { if (field.IsFieldEmpty(i)) { field.SetField(i, HumanPlayer); if (depth <= 1) { zugValue = Valuation(field, HumanPlayer); } else { zugValue = Mini(depth - 1, field); } field.SetField(i, ' '); if (zugValue > discovered) { discovered = zugValue; } } } return discovered; }
private int TestForLineComplettings(Fields.Field field, char player) { int ret = -1; for (int playerpos = 0; (playerpos < field.Length) && (ret == -1); playerpos++) { if (field.IsFieldEmpty(playerpos)) { field.SetField(playerpos, player); if ((Logik.WinChecker.Pruefe(SitCodeHelper.ToPlayer(player), field)) && (ret == -1)) ret = playerpos; field.SetField(playerpos, ' '); } } return ret; }
public static Fields.Field GetRandomField(Fields.Field field) { char player = '2'; for (int i = 0; i < field.Length; i++) { field.SetField(GetRandomZug(field), player); player = Player.Player.PlayerChange(player); } return field; }