Esempio n. 1
0
 public void InterpretOutputs(bool whiteTurn)
 {
     // Currently using output sensitivity of 100, might make this lower in the future
     if (outputs[outputs.Count - 1] >= 100)
     {
         int highestActivation           = 0;
         int secondHighestActivation     = 0;
         int highestNeuronPosition       = 0;
         int secondhighestNeuronPosition = 0;
         for (int i = outputs.Count - 4; i < outputs.Count; i++)
         {
             if (outputs[i] > highestActivation)
             {
                 highestActivation     = outputs[i];
                 highestNeuronPosition = i;
             }
         }
         chessManager.board.promotePawnTo(highestNeuronPosition - outputs.Count - 4);
         highestActivation     = 0;
         highestNeuronPosition = 0;
         Field highestField;
         Field secondHighestField;
         for (int i = 0; i < outputs.Count - 5; i++)
         {
             if (outputs[i] > highestActivation)
             {
                 secondHighestActivation     = highestActivation;
                 highestActivation           = outputs[i];
                 secondhighestNeuronPosition = highestNeuronPosition;
                 highestNeuronPosition       = i;
             }
             else if (outputs[i] > secondHighestActivation)
             {
                 secondHighestActivation     = outputs[i];
                 secondhighestNeuronPosition = i;
             }
         }
         int tempHighest = highestNeuronPosition;
         int tempSecond  = secondhighestNeuronPosition;
         int row         = tempHighest / 8;
         int column      = tempHighest % 8;
         highestField       = chessManager.board.gameBoard[column, row];
         row                = tempSecond / 8;
         column             = tempSecond % 8;
         secondHighestField = chessManager.board.gameBoard[column, row];
         if (highestField.piece != null)
         {
             if (highestField.piece.colorIsWhite == whiteTurn)
             {
                 if (!chessManager.movingPiece)
                 {
                     chessManager.MoveHelper(whiteTurn, highestField.position, secondHighestField.position);
                 }
             }
             else
             {
                 if (!chessManager.movingPiece)
                 {
                     chessManager.MoveHelper(whiteTurn, highestField.position, secondHighestField.position);
                 }
             }
         }
         else
         {
             if (!chessManager.movingPiece)
             {
                 chessManager.MoveHelper(whiteTurn, highestField.position, secondHighestField.position);
             }
         }
     }
 }