Beispiel #1
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;
 }
Beispiel #2
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;
 }
Beispiel #3
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;
 }
Beispiel #4
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;
 }
Beispiel #5
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;
 }
Beispiel #6
0
 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;
 }