//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(); }
//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); } } }
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; } } }