Example #1
0
        static void Main(string[] args)
        {
            var pieces = new[]
            {
                new Piece(new Position(3, 4), Side.Black),
                new Piece(new Position(4, 3), Side.Black),
                new Piece(new Position(3, 3), Side.White),
                new Piece(new Position(4, 4), Side.White)
            };

            var board = new Board(new Position(7, 7), pieces);
            var game = new Game(board);
            var view = new BoardView(board);
            view.Print();

            while (true)
            {
                Console.WriteLine($"{game.Turn} turn: enter x,y");
                var input = Console.ReadLine();
                if (input == null)
                {
                    continue;
                }

                var tokens = input.Trim()
                    .Split(',')
                    .Select(x => x.Trim())
                    .Select(int.Parse)
                    .ToArray();
                var position = new Position(tokens.First(), tokens.Last());
                game.PlayPieceAt(position);

                view.Print();
            }
        }
Example #2
0
 public Board(
     Position maximum, 
     IPieceBag pieceBag,
     IContiguousOpponentPieces contiguousOpponentPieces)
 {
     MaximumPosition = maximum;
     this.pieceBag = pieceBag;
     this.contiguousOpponentPieces = contiguousOpponentPieces;
 }
Example #3
0
 public override Position AwayFrom(Position position)
 {
     return new Position(position.X + 1, position.Y - 1);
 }
Example #4
0
 public abstract Position AwayFrom(Position position);
Example #5
0
 private bool IsOutOfBounds(Position position)
 {
     return position.X < 0 || position.X > MaximumPosition.X ||
            position.Y < 0 || position.Y > MaximumPosition.Y;
 }
Example #6
0
 private bool IsOccupied(Position position) => pieces.Any(x => x.Position.Equals(position));
Example #7
0
 public Piece GetPiece(Position position)
 {
     return pieces.Find(x => x.Position.Equals(position));
 }
Example #8
0
 public Board(Position position, IEnumerable<Piece> pieces)
 {
     MaximumPosition = position;
     this.pieces = new List<Piece>(pieces);
 }
Example #9
0
 public Piece(Position position, Side side)
 {
     Position = position;
     Side = side;
 }
Example #10
0
 private bool IsOccupied(Position position) => pieceBag.GetPiece(position) != null;
Example #11
0
 public IPiece GetPiece(Position position) => pieceBag.GetPiece(position);