Exemple #1
0
 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;
 }
Exemple #2
0
 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;
 }
Exemple #3
0
 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;
 }
Exemple #4
0
 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;
 }
Exemple #5
0
 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;
 }
Exemple #6
0
 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;
 }
Exemple #7
0
 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;
 }
Exemple #8
0
 public static int GetRandomZug(Fields.Field field)
 {
     int zug = -1;
     do
     {
         zug = _rnd.Next(0, field.Length);
     } while (!field.IsFieldEmpty(zug));
     return zug;
 }
Exemple #9
0
 public static bool HasEmptyFields(Fields.Field field)
 {
     for (int i = 0; i < field.Length; i++)
     {
         if (field.IsFieldEmpty(i))
             return true;
     }
     return false;
 }
Exemple #10
0
 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;
 }