Example #1
0
    //Looks at each diagonal movements and sees if it is a legal movement and adds it to a list of PieceMoves
    public List <PieceMove> getLegalMoves(BoardLocation boardLocation)
    {
        List <PieceMove> legalMoves = new List <PieceMove>();

        if (!boardLocation.isEmpty())         //if there is a piece at this location

        {
            PieceHandler ph = boardLocation.piece.GetComponent <PieceHandler>();
            if (ph.player == currentPlayer)
            {
                int i = boardLocation.i;
                int j = boardLocation.j;

                calculateLegalMoves(ref i, ref j, ref legalMoves, ref ph, 1, 1);                  //if the NE space is empty
                calculateLegalMoves(ref i, ref j, ref legalMoves, ref ph, 1, -1);                 //if the NW space is empty
                if (ph.king == true)
                {
                    calculateLegalMoves(ref i, ref j, ref legalMoves, ref ph, -1, 1);                      //if the SE space is empty
                    calculateLegalMoves(ref i, ref j, ref legalMoves, ref ph, -1, -1);                     //if the SW space is empty
                }
            }
            selectedPiece = boardLocation;
        }

        currentLegalMoves = legalMoves;
        displayLegalMoves(legalMoves);
        return(legalMoves);
    }
Example #2
0
 void Start()
 {
     if (GameManager.instance.GameOver)
     {
         return;
     }
     parentPiece = transform.parent.GetComponent <PieceHandler>();
     GameManager.instance.OnPiecePlaced += NewPlacement;
 }
Example #3
0
    public void addPiece(PieceHandler piece)
    {
        int index = checkForRedundancies();

        if (index != -1)
        {
            pieces[index] = piece;
        }
        else
        {
            pieces.Add(piece);
        }
    }
Example #4
0
    public bool TryMove(PieceHandler pieceHandler, GameObject destination)
    {
        bool moveFound      = false;
        bool promotionFound = false;

        Square squareTo = Board.GetSquare(destination.name);

        foreach (Move move in pieceHandler.LegalMoves)
        {
            if (move.To == squareTo)
            {
                moveFound = true;

                switch (move.Name)
                {
                case Move.MoveNames.PawnPromotionBishop:
                    bishopPromotion = move;
                    promotionFound  = true;
                    break;

                case Move.MoveNames.PawnPromotionKnight:
                    knightPromotion = move;
                    promotionFound  = true;
                    break;

                case Move.MoveNames.PawnPromotionQueen:
                    queenPromotion = move;
                    promotionFound = true;
                    break;

                case Move.MoveNames.PawnPromotionRook:
                    rookPromotion  = move;
                    promotionFound = true;
                    break;

                default:
                    moveToMake = move;
                    break;
                }
            }
        }

        if (promotionFound)
        {
            UIHandler.Busy = true;
            promotionSelector.SetActive(true);
        }

        return(moveFound);
    }
Example #5
0
    void RpcChangeTrangsform(GameObject checker, Vector3 moveTo)
    {
        //Destroy (checker);
        PieceHandler _ph = checker.GetComponent <PieceHandler>();

        _ph.Move(moveTo);

        //Debug.Log ("ASSIGNED A VALUE");
        //if (_ph == null) {
        //	Debug.Log ("I'm null");
        //} else {
        //	Debug.Log ("I'm not null");
        //}
        //_ph.target = moveTo;
    }
Example #6
0
    public void ReportPiecePlaced()
    {
        if (OnPiecePlaced != null)
        {
            OnPiecePlaced();
        }
        List <Collision> blockList = new List <Collision>();

        foreach (Collision block in FindObjectsOfType <Collision>())
        {
            blockList.Add(block);
        }

        for (int i = 19; i >= 0; i--)
        {
            int rowBlockCount = 0;
            foreach (Collision block in blockList)
            {
                if (block.GetCurrentRow() == i)
                {
                    rowBlockCount++;
                }
            }
            // print("Blocks in row " + i + ": " + rowBlockCount);
            if (rowBlockCount > 9)
            {
                GameObject   newCollection = new GameObject();
                PieceHandler ph            = newCollection.AddComponent <PieceHandler>();
                ph.gameObject.SetActive(false);
                ph.Uncontrollable = true;
                foreach (Collision block in blockList)
                {
                    if (block.GetCurrentRow() == i)
                    {
                        Destroy(block.gameObject);
                    }
                    else if (block.GetCurrentRow() < i)
                    {
                        block.transform.parent = newCollection.transform;
                        ph.boxes.Add(block);
                    }
                }
                ph.gameObject.SetActive(true);
            }
        }
    }
Example #7
0
    void OnMouseDown( )
    {
        if (UIHandler.Busy)
        {
            return;
        }

        if (boardHandler.GameOver)
        {
            return;
        }

        if (Game.PlayerToPlay.Intellegence == Player.PlayerIntellegenceNames.Computer)
        {
            return;
        }

        if (PieceHandler.Selected != null)
        {
            PieceHandler selectedHandler = PieceHandler.Selected.GetComponent <PieceHandler>( );
            if (selectedHandler.TryMoveTo(gameObject))
            {
                selectedHandler.Deselect( );
            }
            else if (Piece != null)
            {
                PieceHandler pieceHandler = Piece.GetComponent <PieceHandler>( );
                if (pieceHandler.Colour == Game.PlayerToPlay.Colour)
                {
                    selectedHandler.Deselect( );
                    pieceHandler.Select( );
                }
            }
        }
        else if (Piece != null)
        {
            PieceHandler pieceHandler = Piece.GetComponent <PieceHandler>( );
            if (pieceHandler.Colour == Game.PlayerToPlay.Colour)
            {
                pieceHandler.Select( );
            }
        }
    }
Example #8
0
    private void ProcessMove(Move move = null)
    {
        move = move ?? Game.MoveHistory.Last;

        Square        fromSquare        = move.From;
        SquareHandler fromSquareHandler = GameObject.Find(fromSquare.Name).GetComponent <SquareHandler>( );

        PieceHandler movedPieceHandler = fromSquareHandler.Piece.GetComponent <PieceHandler>( );

        Square        toSquare        = move.To;
        SquareHandler toSquareHandler = GameObject.Find(toSquare.Name).GetComponent <SquareHandler>( );

        fromSquareHandler.Piece = null;

        if (toSquareHandler.Piece != null)
        {
            GameObject.Destroy(toSquareHandler.Piece);
            toSquareHandler.Piece = null;
        }

        toSquareHandler.Piece    = movedPieceHandler.gameObject;
        movedPieceHandler.Square = toSquareHandler.gameObject;

        movedPieceHandler.gameObject.transform.position = toSquareHandler.gameObject.transform.position;

        /* special cases */
        switch (move.Name)
        {
        case Move.MoveNames.CastleQueenSide:
        case Move.MoveNames.CastleKingSide:
            ProcessCastle(move);
            break;

        case Move.MoveNames.PawnPromotionBishop:
        case Move.MoveNames.PawnPromotionKnight:
        case Move.MoveNames.PawnPromotionQueen:
        case Move.MoveNames.PawnPromotionRook:
            ProcessPromotion(move, movedPieceHandler.gameObject);
            break;
        }
    }
Example #9
0
	// Use this for initialization
	void Start () {
		matrixTemplate = new int[,]
		{
			{1,1,1,2,2,2,2,2},
			{1,1,1,0,0,2,2,1},
			{1,1,1,0,0,1,1,1},
			{1,1,1,1,1,1,1,1},
			{1,1,1,1,1,1,1,1},
			{1,1,1,0,0,1,1,1},
			{1,1,1,0,0,2,1,1},
			{1,1,1,1,1,2,1,1}
		};

		groundMatrix = new Block[matrixTemplate.GetUpperBound(0)+1,matrixTemplate.GetUpperBound(1)+1];
		ph = GameObject.Find("GlobalManager").GetComponent<PieceHandler>();


		CreateGround(matrixTemplate);

		ph.SaveBoard(groundMatrix, matrixTemplate);
	}
Example #10
0
    //Populates the legalMoves reference with legal moves based on the diagonal direction put into the parameters.
    void calculateLegalMoves(ref int i, ref int j, ref List <PieceMove> legalMoves, ref PieceHandler ph, int iOffset, int jOffset)
    {
        int playerModifier = currentPlayer ? -1 : 1;         //If its player2 go in opposite direction

        iOffset *= playerModifier;
        jOffset *= playerModifier;
        if (inRange(i + iOffset, 0, 8) && inRange(j + jOffset, 0, 8) && board[i + iOffset][j + jOffset].isEmpty())          //checks if diagonal is on board and if the space is empty
        {
            legalMoves.Add(new PieceMove(board[i + iOffset][j + jOffset]));
            if (i + iOffset == 0 || i + iOffset == 7 && ph.king == false)
            {
                legalMoves[legalMoves.Count - 1].kingPiece = true;
            }
        }
        else if (inRange(i + iOffset, 0, 8) && inRange(j + jOffset, 0, 8) && board[i + iOffset][j + jOffset].hasEnemy(currentPlayer) && inRange(i + (iOffset * 2), 0, 8) && inRange(j + (jOffset * 2), 0, 8) && board[i + (iOffset * 2)][j + (jOffset * 2)].isEmpty())   //checks if diagonal is on board and space is enemy, then if the next diagonal is on board and empty
        {
            legalMoves.Add(new PieceMove(board[i + (iOffset * 2)][j + (jOffset * 2)], board[i + iOffset][j + jOffset]));
            if (i + (iOffset * 2) == 0 || i + (iOffset * 2) == 7 && ph.king == false)
            {
                legalMoves[legalMoves.Count - 1].kingPiece = true;
            }
        }
    }
Example #11
0
	// Use this for initialization
	void Start () {
		mr = GetComponent<MeshRenderer>();
        originalColor = mr.material.color;
		ph = GameObject.Find("GlobalManager").GetComponent<PieceHandler>();
		matrixPosition = new Vector2((int)transform.position.x, (int)transform.position.z);
	}
 protected void SetUp()
 {
     pH = new PieceHandler();
 }
Example #13
0
	// Use this for initialization
	void Start () {
		ph = GameObject.Find("GlobalManager").GetComponent<PieceHandler>();
		block = gameObject.GetComponent<Block>();
	}
Example #14
0
    public bool hasEnemy(bool player)
    {
        PieceHandler ph = piece.GetComponent <PieceHandler>();

        return(ph.player != player);
    }
Example #15
0
    public bool TryMove( PieceHandler pieceHandler, GameObject destination )
    {
        bool moveFound = false;
        bool promotionFound = false;

        Square squareTo = Board.GetSquare( destination.name );

        foreach( Move move in pieceHandler.LegalMoves ) {

            if( move.To == squareTo ) {

                moveFound = true;

                switch( move.Name ) {
                    case Move.MoveNames.PawnPromotionBishop:
                        bishopPromotion = move;
                        promotionFound = true;
                        break;
                    case Move.MoveNames.PawnPromotionKnight:
                        knightPromotion = move;
                        promotionFound = true;
                        break;
                    case Move.MoveNames.PawnPromotionQueen:
                        queenPromotion = move;
                        promotionFound = true;
                        break;
                    case Move.MoveNames.PawnPromotionRook:
                        rookPromotion = move;
                        promotionFound = true;
                        break;
                    default:
                        moveToMake = move;
                        break;
                }

            }

        }

        if( promotionFound ) {
            UIHandler.Busy = true;
            promotionSelector.SetActive( true );
        }

        return moveFound;
    }
Example #16
0
 // Start is called before the first frame update
 void Awake()
 {
     Instance = this;
 }