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); } }
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); }
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(); }
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"))) ); }
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(); }
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); }
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); }
private Piece SpawnPiece(PiecePosition piecePos, Player owner, PieceMovement movement) { Piece piece = Instantiate(piecePrefab, this.transform); piece.Init(piecePos, owner, movement); return(piece); }
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); }
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))); }
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>(); }
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); }
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); }
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); }
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); }
private void Awake() { if (_instance != null && _instance != this) { Destroy(this.gameObject); } else { _instance = this; } }
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); }
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; }
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)); }
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)); }