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); } } } }