示例#1
0
文件: Board.cs 项目: Aladewale/games
        public Board(Control board, Control wKilled, Control bKilled, bool inverted)
        {
            this.board = board; this.wKilled = wKilled; this.bKilled = bKilled;
            this.inverted = inverted;
            for (int x = 1; x < 9; x++) for (int y = 1; y < 9; y++) AllSquares[x, y] = new Square(board, x, y, inverted);

            foreach (var item in pieces)
            {
                var piece = new Piece(board, item.Key, inverted) { Square = AllSquares[item.Value.X, item.Value.Y] };
                piece.BeforeMove += new EventHandler<PieceEventArgs>(piece_BeforeMove);
                piece.Move += new EventHandler<PieceEventArgs>(piece_Move);
                AllPieces.Add(piece);
            }
        }
示例#2
0
 public PieceEventArgs(Square newSquare)
 {
     NewSquarePiece = (NewSquare = newSquare).Piece;
 }
示例#3
0
 public MoveResolver(List<Square> list, Piece piece, Square[,] s, List<PieceId> moved)
 {
     o = list; p = piece; this.s = p.Square; squares = s; this.moved = moved;
 }
示例#4
0
        private bool TryAddSquare(Square s, int x, int y, PieceId piece, bool pawnForward, bool pawnSide)
        {
            int newX = s.X + x, newY = s.Y + y;
            if (newX > 8 || newX < 1 || newY > 8 || newY < 1)
                return false;

            Square sq = squares[newX, newY];

            if (pawnSide && (sq.Piece.HasValue == false || sq.Piece.Value.Black == piece.Black))
                return false; //if pawn & sideways, should not be blank or same color

            if (sq.Piece.HasValue && (pawnForward || sq.Piece.Value.Black == piece.Black))
                return false; //blocked by same color / any is pawn going forward

            o.Add(sq);
            return true;
        }