Example #1
0
        public IPiece Create(ColourOfPiece colour, KindOfPiece kind, bool isFirstMovie = true)
        {
            ICheckStrategyFactory checkStrategyFactory = new CheckStrategyFactory();
            ICheckStrategy        checkStrategy        = checkStrategyFactory.Create(kind, isFirstMovie);

            return(new ChessPiece(colour, kind, checkStrategy));
        }
Example #2
0
        public ICheckStrategy Create(KindOfPiece kindsOfPiece, bool isFirstMovie)
        {
            switch (kindsOfPiece)
            {
            case KindOfPiece.Knight:
                return(new KnightCheckStrategy());

            case KindOfPiece.Queen:
                return(new QueenCheckStrategy());

            case KindOfPiece.Rook:
                if (isFirstMovie)
                {
                    var checkStrategy      = new RookCheckStrategy();
                    var firstMoveDecorator = new FirstMovieDecorator();
                    firstMoveDecorator.Component = checkStrategy;
                    return(firstMoveDecorator);
                }
                else
                {
                    return(new RookCheckStrategy());
                }

            case KindOfPiece.Pawn:
                return(new PawnCheckStrategy());

            case KindOfPiece.King:
                if (isFirstMovie)
                {
                    return(CreateKingStrategyWithCastlingDecorator(TypeOfCastling.Both));
                }
                else
                {
                    return(new KingCheckStrategy());
                }

            case KindOfPiece.Bishop:
                return(new BishopCheckStrategy());

            default:
                throw new ApplicationException("unexpected argument");
            }
        }
Example #3
0
 public AdvancePiece(ColourOfPiece colour, KindOfPiece kind, ICheckStrategy checkStrategy)
     : base(colour, kind, checkStrategy)
 {
     IsFirstMove = true;
 }
Example #4
0
 public ChessPiece(ColourOfPiece colour, KindOfPiece kind, ICheckStrategy checkStrategy)
 {
     Colour        = colour;
     Kind          = kind;
     CheckStrategy = checkStrategy;
 }