示例#1
0
文件: Board.cs 项目: reza-t/ChessGUI
        public void move(int x1, int y1, int x2, int y2)
        {
            // Chain and Responsibility Design Pattern
            MoveHandlerBase targetOutside   = new TargetOutSideHandler();
            MoveHandlerBase noPieceOnSource = new NoPieceOnSourceHandler();
            MoveHandlerBase turn            = new TurnHandler();
            MoveHandlerBase targetOwnPiece  = new TargetOwnPieceHandler();
            MoveHandlerBase collision       = new CollisionHandler();
            MoveHandlerBase illigalMove     = new IlligalMoveHandler();
            MoveHandlerBase hit             = new HitHandler();
            MoveHandlerBase legalMove       = new LegalMoveHandler();


            targetOutside.SetNext(noPieceOnSource);
            noPieceOnSource.SetNext(turn);
            turn.SetNext(targetOwnPiece);
            targetOwnPiece.SetNext(collision);
            collision.SetNext(illigalMove);
            illigalMove.SetNext(hit);
            hit.SetNext(legalMove);


            targetOutside.Handle(x1, y1, x2, y2, Fields);
        }