// Start is called before the first frame update void Start() { //Assign the script attached to the same gameObject pieceFactroy = gameObject.GetComponent <ChessPieceFactory>(); CreateChessPieces(); whiteTurn = true; }
public void CheckMovies_Few_Possible_Movies_Test() { //Arrange var chessboard = new ChessboardModel(new ChessMovie()); var pieceFactory = new ChessPieceFactory(); chessboard["b3"].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.Pawn); chessboard["a4"].Piece = pieceFactory.Create(ColourOfPiece.Black, KindOfPiece.Pawn); chessboard["d5"].Piece = pieceFactory.Create(ColourOfPiece.Black, KindOfPiece.Pawn); chessboard["d1"].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.Pawn); chessboard["b5"].Piece = pieceFactory.Create(ColourOfPiece.Black, KindOfPiece.Pawn); chessboard["b1"].Piece = pieceFactory.Create(ColourOfPiece.Black, KindOfPiece.Pawn); chessboard["e3"].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.Pawn); //Act var receivedMovies = chessboard["b3"].Piece.CheckStrategy.CheckMovies(new Position("b3"), chessboard); var expectedMovies = new List <string>() { "a4", "b4" }; var commonMovies = receivedMovies.Intersect(expectedMovies); //Assert Assert.AreEqual(expectedMovies.Count(), commonMovies.Count()); }
public void Given_a_dto_with_unknown_type_and_called_create_then_exception_is_thrown3() { var rookDto = new ChessPiece { Type = "foo" }; ChessPieceFactory unitundertest = new ChessPieceFactory(); Assert.Throws <InvalidEnumArgumentException>(() => unitundertest.Create(rookDto)); }
/// <summary> /// Called in MovePiece. If a promoting move was made, the pawn is removed from the board and replaced with the selected pawn promotion. /// </summary> /// <param name="mover">Moving pawn.</param> /// <returns></returns> protected virtual ChessPiece CheckPawnPromotion(Pawn mover) { if (mover.GetRelativeBoardCoord(0, 1).y < WHITE_BACKROW || mover.GetRelativeBoardCoord(0, 1).y > BLACK_BACKROW) { RemovePieceFromBoard(mover); RemovePieceFromActiveTeam(mover); return(AddPieceToBoard(ChessPieceFactory.Create(selectedPawnPromotion, mover.GetTeam(), mover.GetBoardPosition()))); } return(null); }
protected override ChessPiece CheckPawnPromotion(Pawn mover) { if (promotionSquares.Contains(mover.GetBoardPosition())) { RemovePieceFromBoard(mover); RemovePieceFromActiveTeam(mover); return(AddPieceToBoard(ChessPieceFactory.Create(selectedPawnPromotion, mover.GetTeam(), mover.GetBoardPosition()))); } return(null); }
public ChessPiece(Alliance alliance, Texture2D texture, IEnumerable <IPieceBehaviour> pieceBehaviours, int row, int column, bool hasmoved, int materialValue, ChessPieceFactory factory) { Row = row; Column = column; Alliance = alliance; Texture = texture; PieceBehaviours = pieceBehaviours; HasMoved = hasmoved; MaterialValue = materialValue; Factory = factory; }
public void Given_a_dto_and_called_create_then_return_correct_object(string inputType, ChessPieceEnum expectedType) { var rookDto = new ChessPiece { Type = inputType }; ChessPieceFactory unitundertest = new ChessPieceFactory(); var result = unitundertest.Create(rookDto); Assert.That(result.Type, Is.EqualTo(expectedType)); }
public Walker(string pieceName, DialLayout layout) { originalAdjacency = ChessPieceFactory. GetChessPieceByName(pieceName). GenerateAdjacencyMatrix(layout); applyAdjacency = (int[, ])originalAdjacency.Clone(); walkResult = MatrixExt.IdentityMatrix(originalAdjacency.GetLength(0)); _currentStep = 0; this.layout = layout; rules = new List <IWalkRule> (); }
public IBoard Create(TypeOfGame kind) { IPieceFactory pieceFactory = new ChessPieceFactory(); switch (kind) { case TypeOfGame.Chess: IBoard chessboard = new ChessboardModel(new ChessMovie()); //a1 - h1 chessboard.Fields[0, 0].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.Rook); chessboard.Fields[1, 0].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.Knight); chessboard.Fields[2, 0].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.Bishop); chessboard.Fields[3, 0].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.Queen); chessboard.Fields[4, 0].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.King); chessboard.Fields[5, 0].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.Bishop); chessboard.Fields[6, 0].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.Knight); chessboard.Fields[7, 0].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.Rook); //a2 - h2 for (int i = 0; i < 8; i++) { chessboard.Fields[i, 1].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.Pawn); } //a7 - h7 for (int i = 0; i < 8; i++) { chessboard.Fields[i, 6].Piece = pieceFactory.Create(ColourOfPiece.Black, KindOfPiece.Pawn); } //a8 - h8 chessboard.Fields[0, 6].Piece = pieceFactory.Create(ColourOfPiece.Black, KindOfPiece.Rook); chessboard.Fields[1, 6].Piece = pieceFactory.Create(ColourOfPiece.Black, KindOfPiece.Knight); chessboard.Fields[2, 6].Piece = pieceFactory.Create(ColourOfPiece.Black, KindOfPiece.Bishop); chessboard.Fields[3, 6].Piece = pieceFactory.Create(ColourOfPiece.Black, KindOfPiece.Queen); chessboard.Fields[4, 6].Piece = pieceFactory.Create(ColourOfPiece.Black, KindOfPiece.King); chessboard.Fields[5, 6].Piece = pieceFactory.Create(ColourOfPiece.Black, KindOfPiece.Bishop); chessboard.Fields[6, 6].Piece = pieceFactory.Create(ColourOfPiece.Black, KindOfPiece.Knight); chessboard.Fields[7, 6].Piece = pieceFactory.Create(ColourOfPiece.Black, KindOfPiece.Rook); return(chessboard); case TypeOfGame.Checkers: return(null); default: return(null); } }
/// <summary> /// Performs the castling move. Should be called within TryPerformCastlingRookMoves. /// </summary> /// <param name="castlingPiece">Piece to castle with.</param> /// <param name="castlingPieceNewPos">Castling piece's final position.</param> /// <returns></returns> protected virtual ChessPiece PerformCastle(ChessPiece castlingPiece, BoardCoord castlingPieceNewPos) { if (AssertContainsCoord(castlingPieceNewPos)) { if (castlingPiece != null) { RemovePieceFromBoard(castlingPiece); RemovePieceFromActiveTeam(castlingPiece); return(AddPieceToBoard(ChessPieceFactory.Create(castlingPiece.GetPieceType(), castlingPiece.GetTeam(), castlingPieceNewPos))); } else { Debug.LogError("Reference to the castling piece should not be null! Ensure references were made when the piece was first created."); } } return(null); }
public void CheckMovies_Short_Castling_Occupied_Field() { //Arrange var chessboard = new ChessboardModel(new ChessMovie()); var pieceFactory = new ChessPieceFactory(); chessboard["e1"].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.King); chessboard["h1"].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.Rook); chessboard["a6"].Piece = pieceFactory.Create(ColourOfPiece.Black, KindOfPiece.Bishop); var castling = new Castling(); //Act var receivedMovies = castling.CheckMovies(new Position("e1"), chessboard); //Assert Assert.AreEqual(receivedMovies.Count(), 0); }
public void CanKnightTakePieces() { //Arrange var knight = ChessPieceFactory.BuildChessPiece(ChessPieceColor.White, ChessPieceType.Knight, new Position(0, 0)); var other1 = ChessPieceFactory.BuildChessPiece(ChessPieceColor.Black, ChessPieceType.Rook, new Position(2, 1)); var other2 = ChessPieceFactory.BuildChessPiece(ChessPieceColor.Black, ChessPieceType.Rook, new Position(5, 5)); var pieces = new List <ChessPiece> { knight, other1, other2 }; //Act var inRangeOfKnight = knight.PiecesCanTake(pieces).ToList(); //Assert Assert.Contains(other1, inRangeOfKnight); Assert.DoesNotContain(other2, inRangeOfKnight); Assert.DoesNotContain(knight, inRangeOfKnight); Assert.Single(inRangeOfKnight); }
public void CheckMovies_Short_Castling_Movie_Possible() { //Arrange var chessboard = new ChessboardModel(new ChessMovie()); var pieceFactory = new ChessPieceFactory(); chessboard["e1"].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.King); chessboard["h1"].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.Rook); chessboard["a6"].Piece = pieceFactory.Create(ColourOfPiece.White, KindOfPiece.Bishop); var castling = new Castling(); //Act var receivedMovies = castling.CheckMovies(new Position("e1"), chessboard); var expectedMovies = new List <string>() { "g1" }; var commonMovies = receivedMovies.Intersect(expectedMovies); //Assert Assert.AreEqual(expectedMovies.Count(), commonMovies.Count()); }
public override bool MovePiece(ChessPiece mover, BoardCoord destination) { int currentCaptures = mover.CaptureCount; if (base.MovePiece(mover, destination)) { if (((mover is King) == false) && mover.CaptureCount != currentCaptures) { RemovePieceFromBoard(mover); RemovePieceFromActiveTeam(mover); if (mover is Pawn) { AddPieceToBoard(new Pawn(mover.GetOpposingTeam(), destination, initialMoveLimit: 1)); } else { AddPieceToBoard(ChessPieceFactory.Create(mover.GetPieceType(), mover.GetOpposingTeam(), destination)); } } return(true); } return(false); }
public override void PopulateBoard() { int SPseed = Random.Range(0, 960); Piece[] randomPieceOrder = GetStartingPosition(SPseed); Debug.Log(SPseed); for (int x = 0; x < BOARD_WIDTH; x++) { AddPieceToBoard(new Pawn(Team.WHITE, new BoardCoord(x, WHITE_PAWNROW))); AddPieceToBoard(new Pawn(Team.BLACK, new BoardCoord(x, BLACK_PAWNROW))); if (randomPieceOrder[x] == Piece.King) { currentRoyalPiece = (King)AddPieceToBoard(ChessPieceFactory.Create(randomPieceOrder[x], Team.WHITE, new BoardCoord(x, WHITE_BACKROW))); opposingRoyalPiece = (King)AddPieceToBoard(ChessPieceFactory.Create(randomPieceOrder[x], Team.BLACK, new BoardCoord(x, BLACK_BACKROW))); } else { AddPieceToBoard(ChessPieceFactory.Create(randomPieceOrder[x], Team.WHITE, new BoardCoord(x, WHITE_BACKROW))); AddPieceToBoard(ChessPieceFactory.Create(randomPieceOrder[x], Team.BLACK, new BoardCoord(x, BLACK_BACKROW))); } } }
public Rook(Alliance alliance, Texture2D texture, IEnumerable <IPieceBehaviour> pieceBehaviours, bool hasMoved, int materialValue, ChessPieceFactory factory) : base(alliance, texture, pieceBehaviours, hasMoved, materialValue, factory) { }
public PawnPromotionTile(int row, int column, TileColor tileColor, Texture2D texture, IEnumerable <Alliance> alliancesToPromote, ChessPieceFactory promotionFactory) : base(row, column, tileColor, texture) { AlliancesToPromote = new List <Alliance>(alliancesToPromote).AsReadOnly(); PromotionFactory = promotionFactory; }
public King(Alliance alliance, Texture2D texture, IEnumerable <IPieceBehaviour> pieceBehaviours, int row, int column, bool hasMoved, int materialValue, ChessPieceFactory factory) : base(alliance, texture, pieceBehaviours, row, column, hasMoved, materialValue, factory) { }
public Pawn(Alliance alliance, Texture2D texture, IEnumerable <IPieceBehaviour> pieceBehaviours, int row, int column, bool currentlyenpassantable, bool hasMoved, int materialValue, ChessPieceFactory factory) : base(alliance, texture, pieceBehaviours, row, column, hasMoved, materialValue, factory) { CurrentlyEnPassantable = currentlyenpassantable; }