Вы должны когда-либо добавлять aMove только в список tieMoves, так как вы всегда хотите выполнить только одно из aMoves, однако bestValue останется bMove, cMove, aMove или любым другим по вашему выбору. Таким образом, вы сравниваете лучший дочерний результат (т. Е. Это результат создания A, затем B, а затем C), но вы сохраняете родительский ход (A - это первый ход, который вам нужно сделать)