Example #1
0
    //Range les pièces à leurs positions de départ
    public static void startPosition()
    {
        int        j = 1;
        GameObject Wpawn, Bpawn, piece;

        for (j = 1; j <= 8; j++)
        {
            Wpawn = GameObject.Find("Wpawn" + j);
            toPlacePiece(Wpawn, 2, j);
            Bpawn = GameObject.Find("Bpawn" + j);
            toPlacePiece(Bpawn, 7, j);
        }

        //placer les pièces blanches
        piece = GameObject.Find("Wknight2");
        toPlacePiece(piece, 1, 2);
        piece = GameObject.Find("Wknight1");
        toPlacePiece(piece, 1, 7);
        piece = GameObject.Find("Wrook1");
        toPlacePiece(piece, 1, 8);
        piece = GameObject.Find("Wrook2");
        toPlacePiece(piece, 1, 1);
        piece = GameObject.Find("Wking");
        toPlacePiece(piece, 1, 5);
        piece = GameObject.Find("Wqueen");
        toPlacePiece(piece, 1, 4);
        piece = GameObject.Find("Wbishop1");
        toPlacePiece(piece, 1, 6);
        piece = GameObject.Find("Wbishop2");
        toPlacePiece(piece, 1, 3);

        //placer les pièce noires
        piece = GameObject.Find("Bknight2");
        toPlacePiece(piece, 8, 2);
        piece = GameObject.Find("Bknight1");
        toPlacePiece(piece, 8, 7);
        piece = GameObject.Find("Brook1");
        toPlacePiece(piece, 8, 8);
        piece = GameObject.Find("Brook2");
        toPlacePiece(piece, 8, 1);
        piece = GameObject.Find("Bking");
        toPlacePiece(piece, 8, 5);
        piece = GameObject.Find("Bqueen");
        toPlacePiece(piece, 8, 4);
        piece = GameObject.Find("Bbishop1");
        toPlacePiece(piece, 8, 6);
        piece = GameObject.Find("Bbishop2");
        toPlacePiece(piece, 8, 3);
        BoardStateManagment.initializeControlArea();
        BoardStateManagment.initializeControlArea();
        graveyard.initialisationTab();
    }
Example #2
0
    //Test si le déplacement est autorisé, si oui met à jour TabPosition
    public static bool majTabPosition(GameObject piece, GameObject target)
    {
        String playerColor = (piece.name.Substring(0, 1) == "W")? "White" : "Black";
        int    iTarget, jTarget, iPiece, jPiece;
        bool   moveAuthorized;

        iPiece = searchIndexIOfPiece(piece);
        jPiece = searchIndexJOfPiece(piece);
        //Si target est un tile
        if (target.transform.tag == "Tile")
        {
            //Récupération des coordonnées du tile dans le nom caseTarget
            iTarget        = Convert.ToInt32(target.name.Substring(4, 1));
            jTarget        = Convert.ToInt32(target.name.Substring(5, 1));
            moveAuthorized = Move.moveAuthorized(iPiece, jPiece, iTarget, jTarget, piece.name, target);
            if (moveAuthorized)
            {
                tabPosition[iTarget, jTarget] = piece;
                Debug.Log(piece.name + " case" + iTarget + jTarget);
                //Suppression de piece à son ancien emplacement dans tabposition
                tabPosition[iPiece, jPiece] = null;
                BoardStateManagment.eraseControlAreaOf(piece);
                BoardStateManagment.majBoard(iPiece, jPiece, iTarget, jTarget, piece, target);
                //Si le joueur se met lui même en échec annulation du déplacement
                if (VictoryConditions.kingInCheck(playerColor))
                {
                    tabPosition[iPiece, jPiece]   = piece;
                    tabPosition[iTarget, jTarget] = null;
                    BoardStateManagment.eraseControlAreaOf(piece);
                    BoardStateManagment.majBoard(iPiece, jPiece, iTarget, jTarget, piece, target);
                    return(false);
                }
                return(true);
            }
            else
            {
                return(false);
            }
        }

        //Si target est une piece
        else
        {
            iTarget = searchIndexIOfPiece(target);
            jTarget = searchIndexJOfPiece(target);

            moveAuthorized = Move.moveAuthorized(iPiece, jPiece, iTarget, jTarget, piece.name, target);
            if (moveAuthorized)
            {
                //Supression de piece à son ancien emplacement dans tabposition
                tabPosition[iPiece, jPiece] = null;
                //Remplacement dans tabPosition de target par piece
                tabPosition[iTarget, jTarget] = piece;
                Debug.Log(piece.name + " case" + iTarget + jTarget);
                BoardStateManagment.eraseControlAreaOf(piece);
                BoardStateManagment.majBoard(iPiece, jPiece, iTarget, jTarget, piece, target);
                if (VictoryConditions.kingInCheck(playerColor))
                {
                    tabPosition[iPiece, jPiece]   = piece;
                    tabPosition[iTarget, jTarget] = target;
                    BoardStateManagment.eraseControlAreaOf(piece);
                    BoardStateManagment.majBoard(iPiece, jPiece, iTarget, jTarget, piece, target);
                    return(false);
                }
                return(true);
            }
            else
            {
                return(false);
            }
        }
    }
Example #3
0
 void Update()
 {
     //Gestion de la camera
     if (color != camPosition && color == "White")
     {
         StartCoroutine(rotatCam(BlackRotation, WhiteRotation, camBlackPosition, camWhitePosition));
         print("change camPosition");
         camPosition = color;
     }
     if (color != camPosition && color == "Black")
     {
         StartCoroutine(rotatCam(WhiteRotation, BlackRotation, camWhitePosition, camBlackPosition));
         print("change camPosition");
         camPosition = color;
     }
     //Si clique gauche
     if (Input.GetMouseButtonDown(0) && CurrentCamera != null)
     {
         RaycastHit hit;
         //Lance un rayon de la caméra vers le curseur souris
         Ray ray = CurrentCamera.ScreenPointToRay(Input.mousePosition);
         if (Physics.Raycast(ray, out hit, 500))
         {
             MeshRenderer meshRenderer = hit.transform.GetComponent <MeshRenderer>();
             //Si l'objet touché possède un Box collider et le tag "WhitePiece" ou "BlackPiece
             if (meshRenderer != null && hit.collider.transform.tag == color + "Piece")
             {
                 //Si une piece a déjà été sélectionnée elle est désélectionné
                 if (pieceSelected != null)
                 {
                     BoardStateManagment.eraseControlAreaOf(pieceSelected);
                 }
                 //La nouvelle pièce ciblé devient sélectionnée
                 pieceSelected = GameObject.Find(hit.collider.transform.name);
                 BoardManagment.moveSelectionCircle(pieceSelected, selectionCircle);
                 particleSelectionCircle.Play();
                 /*BoardStateManagment.displayControlAreaOf(pieceSelected); */
             }
         }
     }
     //Si clique gauche
     if (Input.GetMouseButtonDown(1))
     {
         RaycastHit hit;
         Ray        ray = CurrentCamera.ScreenPointToRay(Input.mousePosition);
         if (Physics.Raycast(ray, out hit, 500) && pieceSelected != null)
         {
             MeshRenderer meshRenderer = hit.transform.GetComponent <MeshRenderer>();
             target = GameObject.Find(hit.transform.name);
             if (meshRenderer != null && (hit.transform.tag == "Tile") || (hit.transform.tag == vscolor + "Piece"))
             {
                 moveOK = BoardManagment.movePiece(target, pieceSelected);
             }
             else
             {
                 moveOK = -1;
             }
         }
         if (moveOK == 0)
         {
             particleSelectionCircle.Stop();
             Debug.Log("GameLoop: verif echec");
             if (VictoryConditions.kingInCheck(vscolor))
             {
                 if (vscolor == "White")
                 {
                     VictoryConditions.whiteKingInCheck = true;
                 }
                 else
                 {
                     VictoryConditions.blackKingInCheck = true;
                 }
                 Debug.Log("VictoryConditions.searchMovementAuthorized");
                 VictoryConditions.searchMovementAuthorized(vscolor);
                 if (VictoryConditions.kingIsCheckMate())
                 {
                     GameObject victoryText = GameObject.Find("VictoryMessage");
                     Text       myText      = victoryText.GetComponent <Text>();
                     myText.text           = vscolor + "player win the game, click to return menu";
                     endGameCanvas.enabled = true;
                 }
             }
             temp          = vscolor;
             vscolor       = color;
             color         = temp;
             pieceSelected = null;
             moveOK        = 1;
         }
     }
 }