Example #1
0
    IEnumerator IaMovimentRoutine(float timer)
    {
        yield return(new WaitForSeconds(timer));

        AIMoviment moviment = AIPlay();

        Board.instance.AIMove(moviment);
    }
Example #2
0
    public void AIMove(AIMoviment moviment)
    {
        if (moviment == null)
        {
            Debug.Log("moviment from AI is null...GOING TO NEXT TURN");
            NextTurn();
            return;
        }

        if (moviment.piece == null)
        {
            Debug.Log("AI moviment piece is null");
        }

        if (moviment.target == null)
        {
            Debug.Log("AI moviment tile is null");
        }

        //if (moviment.eliminatedBy == null) Debug.Log("AI moviment emilimated piece is null");

        MovePiece(moviment.piece, moviment.target);

        if (moviment.eliminatedBy != null)
        {
            listBoardPieces.Remove(moviment.eliminatedBy);
            Destroy(moviment.eliminatedBy.gameObject);

            if (CheckGameOver() == true)
            {
                if (listBoardPieces[0].CheckPieceType(PieceTypes.White))
                {
                    GameController.instance.ChangeGameState(GameStates.GameClear);
                }
                else
                {
                    GameController.instance.ChangeGameState(GameStates.GameOver);
                }
            }
            else
            {
                NextTurn();
            }
        }
        else
        {
            NextTurn();
        }
    }
Example #3
0
    bool AIBoardTile(BoardPiece actualPiece, int row, int column, int rowFactor, int columnFactor, PieceTypes targetType, bool isKing = false, BoardPiece lastPiece = null)
    {
        if (OnBoardLimits(row, column) == false)
        {
            return(false);
        }

        if (board[row, column].currentPiece == null)
        {
            AIMoviment newMove = new AIMoviment();
            newMove.piece        = actualPiece;
            newMove.target       = board[row, column];
            newMove.eliminatedBy = lastPiece;

            listAvaliableMoves.Add(newMove);

            if (isKing == true)
            {
                AIBoardTile(actualPiece, row + rowFactor, column + columnFactor, rowFactor, columnFactor, targetType, isKing, lastPiece);
            }

            return(true);
        }

        //Check effects when piece != null
        if (board[row, column].currentPiece != null && lastPiece == null)
        {
            if (board[row, column].currentPiece.CheckPieceType(targetType))
            {
                return(false);
            }

            return(AIBoardTile(actualPiece, row + rowFactor, column + columnFactor, rowFactor, columnFactor, targetType, isKing, board[row, column].currentPiece));
        }

        return(false);
    }