예제 #1
0
파일: Rating.cs 프로젝트: sscheele/chess-AI
 public static int rateMaterial(bool isWhite, ChessBoard c)
 {
     int counter = 0;
     int numBishops = 0;
     BitboardLayer[] dict = c.getDict(isWhite);
     for (int j = 0; j <= pieceIndex.KING; j++)
     {
         foreach (int i in dict[j].getTrueIndicies()) {
             if (j != pieceIndex.BISHOP) counter += pieceVals[j];
             else numBishops++;
         }
     }
     if (numBishops >= 2) counter += 300 * numBishops;
     else counter += 250 * numBishops;
     return (int)(counter * 1.75);
 }
예제 #2
0
파일: Rating.cs 프로젝트: sscheele/chess-AI
 public static int rateAttack(bool isWhite, ChessBoard c)
 {
     BitboardLayer[] dict = c.getDict(isWhite);
     BitboardLayer attackedSqs = c.getAllAttackedSq(isWhite);
     int counter = 0;
     for (int j = 0; j <= pieceIndex.KING; j++) //don't include king
     {
         foreach (int i in dict[j].getTrueIndicies())
         {
             if (attackedSqs.trueAtIndex(i))
             {
                 switch (j)
                 {
                     case pieceIndex.PAWN:
                         counter -= 64;
                         break;
                     case pieceIndex.ROOK:
                         counter -= 500;
                         break;
                     case pieceIndex.KNIGHT:
                         counter -= 300;
                         break;
                     case pieceIndex.BISHOP:
                         counter -= 300;
                         break;
                     case pieceIndex.QUEEN:
                         counter -= 900;
                         break;
                     case pieceIndex.KING:
                         counter -= 200;
                         break;
                 }
             }
         }
     }
     return (int)(counter * .5);
 }
예제 #3
0
파일: Rating.cs 프로젝트: sscheele/chess-AI
 public static int ratePositional(bool isWhite, ChessBoard c, int material)
 {
     int counter = 0;
     BitboardLayer[] dict = c.getDict(isWhite);
     for (int j = 0; j <= pieceIndex.KING; j++)
     {
         foreach (int i in dict[j].getTrueIndicies())
         {
             counter += positionValues[j][i];
             if (j == pieceIndex.KING)
             {
                 if (material >= 1750) counter += positionValues[j][i];
                 else counter += positionValues[j + 1][i];
             }
         }
     }
     return counter;
 }