public JsonResult MovePiece([FromBody] PieceMovement pieceMovement)
        {
            if (pieceMovement != null && pieceMovement.isValidPieceMovement())
            {
                try {
                    DataWarehouse.games.movePiece(pieceMovement.gameId,
                                                  pieceMovement.name,
                                                  pieceMovement.initialPosition,
                                                  pieceMovement.finalPosition);

                    Game game = DataWarehouse.games.searchGame(pieceMovement.gameId);
                    Response.StatusCode = 201;
                    return(Json(game));
                }
                catch (Exception e) {
                    Response.StatusCode = 400;
                    return(Json(e.Message));
                }
            }
            else
            {
                Response.StatusCode = 400;
                return(null);
            }
        }
示例#2
0
        public void StartNewGame_And_Move_Should_Switch_Turn()
        {
            Game game = Game.StartNewGame("Carlos", "Marta");

            game.Board.HandleMove(PieceMovement.Create(game.Board.GetSquare("A2").Piece, Position.Create("A2"), Position.Create("A3")));
            Assert.AreEqual(game.BlacksPlayer, game.CurrentTurnPlayer);
        }
示例#3
0
    private PieceMovement movement;      // will handle all piece movement

    public CheckerPiece(int[] pos, bool black)
    {
        position[0]  = pos[0];
        position[1]  = pos[1];
        this.isBlack = black;
        movement     = new PieceMovement();
    }
示例#4
0
        public void Valid_Queen_Movement_Should_Satisfy()
        {
            Piece whiteQueen = Piece.Create(PieceType.Queen, PieceColor.White);
            Piece blackQueen = Piece.Create(PieceType.Queen, PieceColor.Black);

            ISpecification <PieceMovement> specification = specification = MovementValidator.ResolveSpecification(_board, PieceType.Queen);

            Assert.IsTrue(
                specification.IsSatisfied(PieceMovement.Create(whiteQueen, Position.Create("D1"), Position.Create("H1")))
                );
            Assert.IsTrue(
                specification.IsSatisfied(PieceMovement.Create(whiteQueen, Position.Create("D1"), Position.Create("D8")))
                );
            Assert.IsTrue(
                specification.IsSatisfied(PieceMovement.Create(whiteQueen, Position.Create("D1"), Position.Create("G4")))
                );

            Assert.IsTrue(
                specification.IsSatisfied(PieceMovement.Create(blackQueen, Position.Create("D8"), Position.Create("A8")))
                );
            Assert.IsTrue(
                specification.IsSatisfied(PieceMovement.Create(blackQueen, Position.Create("D8"), Position.Create("D3")))
                );
            Assert.IsTrue(
                specification.IsSatisfied(PieceMovement.Create(blackQueen, Position.Create("D8"), Position.Create("H4")))
                );
        }
示例#5
0
        public void Valid_King_Movement_Should_Satisfy()
        {
            Piece whiteKing = Piece.Create(PieceType.King, PieceColor.White);
            Piece blackKing = Piece.Create(PieceType.King, PieceColor.Black);

            ISpecification <PieceMovement> specification = MovementValidator.ResolveSpecification(_board, PieceType.King);

            Assert.IsTrue(
                specification.IsSatisfied(PieceMovement.Create(whiteKing, Position.Create("E1"), Position.Create("E2")))
                );
            Assert.IsTrue(
                specification.IsSatisfied(PieceMovement.Create(whiteKing, Position.Create("E1"), Position.Create("F1")))
                );
            Assert.IsTrue(
                specification.IsSatisfied(PieceMovement.Create(whiteKing, Position.Create("E1"), Position.Create("D2")))
                );

            Assert.IsTrue(
                specification.IsSatisfied(PieceMovement.Create(blackKing, Position.Create("E8"), Position.Create("E7")))
                );
            Assert.IsTrue(
                specification.IsSatisfied(PieceMovement.Create(blackKing, Position.Create("E8"), Position.Create("F8")))
                );
            Assert.IsTrue(
                specification.IsSatisfied(PieceMovement.Create(blackKing, Position.Create("E8"), Position.Create("F7")))
                );
        }
        public void Case1()
        {
            PieceMovement pieceMovement = new PieceMovement(new IntegerVector2(0, 1), 1);

            Assert.IsNotNull(pieceMovement.GetPath(new IntegerVector2(0, 1)));

            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(1, 1)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(-1, 1)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(0, -1)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(-1, 0)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(1, 0)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(1, -1)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(-1, -1)));

            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(-2, 2)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(-1, 2)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(0, 2)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(1, 2)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(2, 2)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(-2, 1)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(2, 1)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(-2, 0)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(2, 0)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(-2, -1)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(2, -1)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(-2, -2)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(-1, -2)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(0, -2)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(1, -2)));
            Assert.IsNull(pieceMovement.GetPath(new IntegerVector2(2, -2)));
        }
        public void Case1()
        {
            PieceMovement pieceMovement = new PieceMovement(new IntegerVector2(0, 1), 1);

            Assert.IsTrue(pieceMovement.IsMoveable(new IntegerVector2(0, 1)));

            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(1, 1)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(-1, 1)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(0, -1)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(-1, 0)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(1, 0)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(1, -1)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(-1, -1)));

            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(-2, 2)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(-1, 2)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(0, 2)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(1, 2)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(2, 2)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(-2, 1)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(2, 1)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(-2, 0)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(2, 0)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(-2, -1)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(2, -1)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(-2, -2)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(-1, -2)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(0, -2)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(1, -2)));
            Assert.IsFalse(pieceMovement.IsMoveable(new IntegerVector2(2, -2)));
        }
 // Start is called before the first frame update
 void Start()
 {
     tPieceCollisionScript = GetComponent <TPieceCollision>();
     sPieceCollisionScript = GetComponent <SPieceCollision>();
     zPieceCollisionScript = GetComponent <ZPieceCollision>();
     jPieceCollisionScript = GetComponent <JPieceCollision>();
     lPieceCollisionScript = GetComponent <LPieceCollision>();
     iPieceCollisionScript = GetComponent <IPieceCollision>();
     oPieceCollisionScript = GetComponent <OPieceCollision>();
     pieceMovementScript   = GetComponent <PieceMovement>();
     firstBag  = generatePieces();
     secondBag = generatePieces();
     for (int i = 0; i < 7; i++)
     {
         Debug.Log(firstBag[i]);
     }
     Debug.Log("t");
     for (int i = 0; i < 7; i++)
     {
         Debug.Log(secondBag[i]);
     }
     heldPiece   = 8;
     counter     = 0;
     canHold     = true;
     onSecondBag = false;
     drawNextPiece();
 }
示例#9
0
    void comprarCard()
    {
        //Compra carta aleatória do baralho
        int        rn = Random.Range(0, baralho.Count);
        GameObject go = new GameObject("numero: " + baralho[rn].numero + ", cor: " + baralho[rn].cor);

        go.tag = "piece";
        PieceMovement pm = go.AddComponent <PieceMovement>();

        pm.numero = baralho[rn].numero;
        pm.cor    = baralho[rn].cor;
        BoxCollider2D bc = go.AddComponent <BoxCollider2D>();

        bc.size      = new Vector2(1, 2);
        bc.isTrigger = true;
        SpriteRenderer renderer = go.AddComponent <SpriteRenderer>();

        renderer.sortingLayerName = "02";
        renderer.sprite           = Resources.Load <Sprite>("teste");

        Mao bd = GameObject.Find("Mao").GetComponent <Mao>();

        baralho.RemoveAt(rn);
        bd.AdicionarPeca(go);
        //cm.Adicionar(go);
        //cm.Posicionar(go);
    }
示例#10
0
    private bool ValidarLinha(int linha)
    {
        List <Deck.Carta> grupo = new List <Deck.Carta>();

        for (int i = 0; i < X_SIZE; i++)
        {
            PieceMovement pm = tab[linha, i].GetComponent <PieceMovement>();
            if (tab[linha, i] == null && grupo.Count != 0)
            {
                if (!ValidarGrupo(grupo))
                {
                    return(false);
                }
                grupo = new List <Deck.Carta>();
            }
            if (tab[linha, i] != null)
            {
                Deck.Carta carta = new Deck.Carta(pm.numero, pm.cor);
                grupo.Add(carta);
            }
        }
        if (!ValidarGrupo(grupo))
        {
            return(false);
        }
        return(true);
    }
示例#11
0
    private Piece SpawnPiece(PiecePosition piecePos, Player owner, PieceMovement movement)
    {
        Piece piece = Instantiate(piecePrefab, this.transform);

        piece.Init(piecePos, owner, movement);
        return(piece);
    }
示例#12
0
        public void StartNewGame_And_Move_Should_Register_Logs()
        {
            Game game    = Game.StartNewGame("Carlos", "Marta");
            bool success = game.Board.HandleMove(PieceMovement.Create(game.Board.GetSquare("A2").Piece, Position.Create("A2"), Position.Create("A3")));

            Assert.IsTrue(success);
            Assert.AreEqual(1, game.WhitesPlayer.TurnLogs.Count);
            Assert.AreEqual(1, game.WhitesPlayer.TurnLogs[0].TurnEvents.Count);
        }
示例#13
0
        public static CastlingEvaluationResult EvaluateCastling(Board board, PieceMovement pieceMovement)
        {
            Square rookSquare = FindRookSquare(board, pieceMovement);
            int    fileOffset = rookSquare.Position.File == "H" ? -2 : 3;

            return(CastlingEvaluationResult.Create(rookSquare.Piece,
                                                   Position.Create(rookSquare.Position.Id),
                                                   Position.Create(rookSquare.Position.FileIndex + fileOffset, rookSquare.Position.RankIndex)));
        }
示例#14
0
    void Start()
    {
        turnManager = GameObject.FindGameObjectWithTag("TurnManager"); // Stores the TurnManager gameobject in the variable, important bc a universal server is needed for the pieces to check if it's their turn or not and for pieces to easily communicate with eachother

        rb = GetComponent <Rigidbody2D>();
        rb.gravityScale     = 0;
        darkPieceScript     = gameObject.GetComponent <DarkPiece>(); // Stores the DarkPiece script in the variable, easy bc both scirpts are on the same gameobject
        pieceMovementScript = turnManager.GetComponent <PieceMovement>();
    }
示例#15
0
        public void HandleMove_To_Invalid_Position_Should_Not_Move_Piece_To_Destination_Square()
        {
            Board board     = Board.CreateAndSetup();
            Piece whitePawn = board.Pieces.First(piece => piece.Color == PieceColor.White &&
                                                 piece.Type == PieceType.Pawn);
            bool success = board.HandleMove(PieceMovement.Create(whitePawn, Position.Create("A2"), Position.Create("B8")));

            Assert.IsFalse(success);
            Assert.AreNotEqual("B8", board.GetSquare(whitePawn).Position.Id);
        }
示例#16
0
        private void CheckForCastlingAndMove(TurnLog turnLog, PieceMovement pieceMovement)
        {
            CastlingMovementSpecification castlingMovementSpecification = CastlingMovementSpecification.Create(this);

            if (castlingMovementSpecification.IsSatisfied(pieceMovement))
            {
                CastlingEvaluationResult castlingEvaluationResult = CastlingEvaluator.EvaluateCastling(this, pieceMovement);
                MovePiece(turnLog, PieceMovement.Create(castlingEvaluationResult.Rook, castlingEvaluationResult.From, castlingEvaluationResult.To));
            }
        }
 // Start is called before the first frame update
 void Start()
 {
     // Bit shift the index of the layer (9) to get a bit mask
     layerMask           = 1 << 9;
     jPieceTopBools      = new bool[4];
     jPieceBottomBools   = new bool[4];
     jPieceLeftBools     = new bool[4];
     jPieceRightBools    = new bool[4];
     pieceMovementScript = this.GetComponent <PieceMovement>();
 }
        static IEnumerable <IntegerVector2> CalculateBrockenPath(IntegerVector2 startPosition, IntegerVector2 viaPosition, IntegerVector2 endPosition,
                                                                 PieceMovement start2ViaPieceMovement, PieceMovement via2EndPieceMovement, bool isFrontPlayersPiece)
        {
            var start2ViaPath = CalculateStraightPath(startPosition, viaPosition, start2ViaPieceMovement, isFrontPlayersPiece);
            var via2EndPath   = CalculateStraightPath(viaPosition, endPosition, via2EndPieceMovement, isFrontPlayersPiece);

            var tempPath = start2ViaPath.Concat(via2EndPath);   //順序は保証されていないにも関わらず保証されたものとして利用

            return(tempPath);
        }
示例#19
0
        public void Non_Jumping_HandleMove_Of_Rook_Should_Return_False()
        {
            Board board = Board.CreateAndSetup();

            Piece pawn    = board.GetSquare("B2").Piece;
            bool  success = board.HandleMove(PieceMovement.Create(pawn, Position.Create("B2"), Position.Create("B4")));

            Assert.IsTrue(success);
            Assert.AreEqual(pawn, board.GetSquare("B4").Piece);
            Assert.IsTrue(board.GetSquare("A5").IsEmpty);
        }
示例#20
0
        public void Move_Onto_Own_Color_Should_Not_Satisfy()
        {
            Board setupBoard = Board.CreateAndSetup();

            LegalMovementSpecification specification = LegalMovementSpecification.Create(setupBoard);
            bool isSatisfied = specification.IsSatisfied(PieceMovement.Create(setupBoard.GetSquare("A1").Piece,
                                                                              Position.Create("A1"),
                                                                              Position.Create("A2")));

            Assert.IsFalse(isSatisfied);
        }
示例#21
0
 private void Awake()
 {
     if (_instance != null && _instance != this)
     {
         Destroy(this.gameObject);
     }
     else
     {
         _instance = this;
     }
 }
示例#22
0
        private void MovePiece(TurnLog turnLog, PieceMovement pieceMovement)
        {
            Square originSquare      = GetSquare(pieceMovement.Piece);
            Square destinationSquare = GetSquare(pieceMovement.To.Id);

            destinationSquare.LandPiece(pieceMovement.Piece);
            originSquare.RemovePiece();

            pieceMovement.Piece.Moved();

            turnLog.AddEvent(TurnEvent.CreateMovedEvent(Position.Create(pieceMovement.From.Id), Position.Create(pieceMovement.To.Id)));
        }
        public void Diagonal_Jumper_Movement_Should_Satisfy()
        {
            Board board = Board.CreateAndSetup();

            JumperMovementSpecification jumperMovementSpecification = JumperMovementSpecification.Create(board);

            PieceMovement pieceMovement = PieceMovement.Create(board.GetSquare("C1").Piece,
                                                               Position.Create("C1"),
                                                               Position.Create("F4"));

            Assert.IsTrue(jumperMovementSpecification.IsSatisfied(pieceMovement));
        }
        public void White_Castiling_Movement_From_King_To_Left_Rook_Should_Not_Satisfy()
        {
            Board board     = Board.Create();
            Piece whiteKing = Piece.Create(PieceType.King, PieceColor.White);

            board.AddPiece(whiteKing, "E1");

            CastlingMovementSpecification castlingMovementSpecification = CastlingMovementSpecification.Create(board);
            bool isSatisfied = castlingMovementSpecification.IsSatisfied(PieceMovement.Create(whiteKing, Position.Create("E1"), Position.Create("C1")));

            Assert.IsFalse(isSatisfied);
        }
        public void Black_Castiling_Movement_From_King_To_Right_Rook_Should_Not_Satisfy()
        {
            Board board     = Board.Create();
            Piece blackKing = Piece.Create(PieceType.King, PieceColor.Black);

            board.AddPiece(blackKing, "E8");

            CastlingMovementSpecification castlingMovementSpecification = CastlingMovementSpecification.Create(board);
            bool isSatisfied = castlingMovementSpecification.IsSatisfied(PieceMovement.Create(blackKing, Position.Create("E8"), Position.Create("G8")));

            Assert.IsFalse(isSatisfied);
        }
示例#26
0
    void Start()
    {
        m_firstCollision = false;
        InstantiatePiece();
        m_pieceMovement = GetComponent <PieceMovement>();
        m_gameManager   = GameManager.GetInstance();
        m_rigidbody     = GetComponent <Rigidbody>();

        m_mutex = new Mutex(true);
        m_mutex.ReleaseMutex();
        m_piecesAlive = GetComponent <PieceBuilder>().m_pieces.Count;
    }
示例#27
0
        public void Diagonal_Pawn_Movement_Should_Not_Satisfy()
        {
            Piece whitePawn = Piece.Create(PieceType.Pawn, PieceColor.White);

            _board.AddPiece(whitePawn, "D4");

            ISpecification <PieceMovement> specification = specification = MovementValidator.ResolveSpecification(_board, PieceType.Pawn);

            Assert.IsFalse(
                specification.IsSatisfied(PieceMovement.Create(whitePawn, Position.Create("D4"), Position.Create("C5")))
                );
        }
        public void Straight_Not_Jumper_Whites_Movement_Should_Not_Satisfy()
        {
            Board board = Board.CreateAndSetup();

            JumperMovementSpecification jumperMovementSpecification = JumperMovementSpecification.Create(board);

            PieceMovement pieceMovement = PieceMovement.Create(board.GetSquare("A2").Piece,
                                                               Position.Create("A2"),
                                                               Position.Create("A4"));

            Assert.IsFalse(jumperMovementSpecification.IsSatisfied(pieceMovement));
        }
示例#29
0
 private bool PiecesStoppedMoving(GameObject[] pieces)
 {
     foreach (GameObject piece in pieces)
     {
         PieceMovement pieceMovement = piece.GetComponent <PieceMovement>();
         if (pieceMovement.IsMoving)
         {
             return(false);
         }
     }
     return(true);
 }
        public void Straight_Jumper_Blacks_Movement_Should_Satisfy()
        {
            Board board = Board.CreateAndSetup();

            JumperMovementSpecification jumperMovementSpecification = JumperMovementSpecification.Create(board);

            PieceMovement pieceMovement = PieceMovement.Create(board.GetSquare("A8").Piece,
                                                               Position.Create("A8"),
                                                               Position.Create("A5"));

            Assert.IsTrue(jumperMovementSpecification.IsSatisfied(pieceMovement));
        }