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)); }
private bool IsMovePossible(TypeOfField typeOfField, ColourOfPiece colour) { switch (typeOfField) { case TypeOfField.Empty: return(true); case TypeOfField.OutOfRange: return(false); case TypeOfField.WhitePiece: return(!IsColorTheSame(typeOfField, colour)); case TypeOfField.BlackPiece: return(!IsColorTheSame(typeOfField, colour)); default: throw new ApplicationException("nieznany typ"); } }
public AdvancePiece(ColourOfPiece colour, KindOfPiece kind, ICheckStrategy checkStrategy) : base(colour, kind, checkStrategy) { IsFirstMove = true; }
private bool IsColorTheSame(TypeOfField typeOfField, ColourOfPiece colour) { return(typeOfField == TypeOfField.BlackPiece && colour == ColourOfPiece.Black || typeOfField == TypeOfField.WhitePiece && colour == ColourOfPiece.White); }
private List <string> CheckAttack(int yStep, int xStep, Position position, ChessboardModel chessboard, ColourOfPiece pieceColour) { position.Y += yStep; position.X += xStep; var typeOfField = chessboard.GetTypeOfField(position); if (typeOfField == TypeOfField.BlackPiece && pieceColour == ColourOfPiece.White || typeOfField == TypeOfField.WhitePiece && pieceColour == ColourOfPiece.Black) { return new List <string>() { position.ToString() } } ; else { return(new List <string>()); } }
public ChessPiece(ColourOfPiece colour, KindOfPiece kind, ICheckStrategy checkStrategy) { Colour = colour; Kind = kind; CheckStrategy = checkStrategy; }