public static int GetFullFields(Fields.Field field) { int count = 0; for (int i = 0; i < field.Length; i++) { if (!field.IsFieldEmpty(i)) count++; } return count; }
public int Play(Fields.Field field) { string sitcode = SitCodeHelper.StringToSitCode(field.ToString()); List<int> fields = new List<int>(writerReader.Read(sitcode)); int zug = -1; do { zug = fields.GetHighestIndex(); if (field.IsFieldEmpty(zug)) { break; } else { fields.Remove(zug); } } while (fields.Count != 0); if (zug == -1) zug = FieldHelper.GetRandomZug(field); return zug; }
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 int GetRandomZug(Fields.Field field) { int zug = -1; do { zug = _rnd.Next(0, field.Length); } while (!field.IsFieldEmpty(zug)); return zug; }
public static bool HasEmptyFields(Fields.Field field) { for (int i = 0; i < field.Length; i++) { if (field.IsFieldEmpty(i)) return true; } return false; }
public int Play(Fields.IField field, char spieler) { string sitcode = SitCodeHelper.StringToSitCode(FieldHelper.GetString(field)); List<int> Fields = new List<int>(writerreader.Read(sitcode)); int zug = -1; do { zug = Fields.ToArray().GetHighestIndex(); if (field.IsFieldEmpty(zug)) { break; } else { Fields.Remove(zug); } } while (true); if (zug == -1) zug = SitCodeHelper.GetRandomZug(sitcode, Length); return zug; }