private function getChildResult(GameState $stateAfterMove): TraversalResult
    {
        $nextPlayerIsFriendly = $stateAfterMove->getNextPlayer()->isFriendsWith($this->objectivePlayer);
        $nextDecisionPoint = new static(
            $this->objectivePlayer,
            $stateAfterMove,
            $this->depthLeft - 1,
            $nextPlayerIsFriendly ? NodeType::MAX() : NodeType::MIN(),
            clone $this->alphaBeta
        );
        return $nextDecisionPoint->traverseGameTree();
    }
private function getChildResult(GameState $stateAfterMove): TraversalResult
    {
        $nextPlayerIsFriendly = $stateAfterMove->getNextPlayer()->isFriendsWith($this->objectivePlayer);
        $nextDecisionPoint = new static(
            $this->objectivePlayer,
            $stateAfterMove,
            $this->depthLeft - 1,
            $nextPlayerIsFriendly ? NodeType::MAX() : NodeType::MIN(),
            clone $this->alphaBeta
        );
        return $nextDecisionPoint->traverseGameTree();
    }
private function getChildResult ( GameState $ stateAfterMove ) : TraversalResult { $ nextPlayerIsFriendly = $ stateAfterMove -> getNextPlayer ( ) -> isFriendsWith ( $ this -> objectivePlayer ) ; $ nextDecisionPoint = new static ( $ this -> objectivePlayer , $ stateAfterMove , $ this -> depthLeft - 1 , $ nextPlayerIsFriendly ? NodeType :: MAX ( ) : NodeType :: MIN ( ) , clone $ this -> alphaBeta ) ; return $ nextDecisionPoint -> traverseGameTree ( ) ; }
Recursively evaluate a child decision
Apply a move and evaluate the outcome
@param GameState $stateAfterMove The GameState that was created as a
result of a possible move.
Recursively evaluate a child decision Apply a move and evaluate the outcome