// Child-level negamax search function. // Unlike NegaMax(), only returns score, not full move. func NegaMaxChild(b *engine.Board, depth int) float64 { if b.IsOver() != 0 || depth == 0 { return EvalBoard(b) } var score float64 = LOSS var childscore float64 for _, board := range b.NewGen() { childscore = -NegaMaxChild(board, depth-1) if childscore > score { score = childscore if score == WIN { return score } } } return score }