Beispiel #1
0
 public ChessPiece(ChessPiece piece)
 {
     _id = piece.Id;
     _isDied = piece._isDied;
     _color = piece._color;
     _type = piece._type;
     _value = piece._value;
     _point = piece._point;
     _texture2d = piece._texture2d;
     _position = piece._position;
 }
Beispiel #2
0
 /// <summary>
 /// Thay đổi vị trí con cờ và ma trận điểm tại điểm đó
 /// </summary>
 /// <param name="chess">quân cờ</param>
 /// <param name="p">điểm đích</param>
 public void SetPoint(ChessPiece chess, Point p)
 {
     chess.Point = p;
     MatrixPosition[p.X, p.Y] = chess.Id;
 }
Beispiel #3
0
        /// <summary>
        /// Di chuyển 1 quân cờ
        /// </summary>
        /// <param name="piece">con cờ</param>
        /// <param name="destination">vị trí đích</param>
        /// <returns>true nếu di chuyển thành công, ngược lại false</returns>
        /// <remarks>Đồng thời thêm vào Stack Undo</remarks>
        public bool MovePiece(ChessPiece piece, Point destination)
        {
            Move m = new Move(piece.Id, piece.Point, this.GetPoint(destination));

            if (piece.Move(destination, this))
            {
                StackUndo.Push(m);
                StackRedo.Clear();
                return true;
            }

            return false;
        }
Beispiel #4
0
 /// <summary>
 /// Thêm 1 quân cờ vào bàn cờ
 /// </summary>
 /// <param name="chess">quân cờ</param>
 public void AddChess(ChessPiece chess)
 {
     _chessPieces.Add(chess);
     MatrixPosition[chess.Point.X, chess.Point.Y] = chess.Id;
 }
Beispiel #5
0
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();

            // TODO: Add your update logic here
            TouchCollection touches = TouchPanel.GetState();

            if (turn == -1)
            {
                if (touches.Count > 0)
                {
                    if (touches[0].State == TouchLocationState.Pressed)
                    {
                        //lấy điểm chạm
                        Point point = board.GetPosition(touches[0]);

                        if (point != new Point(-1, -1))
                        {
                            if (isSelected == false)
                            {
                                selectedChess = board[point];

                                if (selectedChess != null)
                                {
                                    Debug.WriteLine(selectedChess.Value);
                                    Debug.WriteLine(selectedChess.GetNextMoves(board).Count);

                                    if ((selectedChess.Id * turn) > 0)
                                    {
                                        isSelected = true;
                                        board.SelectedBox1.Point = point;
                                        board.SelectedBox2.Point = new Point(-1, -1);
                                    }
                                }

                            }
                            else
                            {

                                //nếu chọn tiếp phải quân mình thì đổi quân chọn
                                if ((board.CheckPoint(point) * selectedChess.Id) > 0)
                                {
                                    selectedChess = board[point];
                                    board.SelectedBox1.Point = point;

                                }
                                //nếu không phải tức là quân địch hoặc trống cho phép di chuyển
                                else
                                {
                                    if (board.MovePiece(selectedChess, point) == true)
                                    {
                                        board.SelectedBox2.Point = point;
                                        isSelected = false;
                                        selectedChess = null;
                                        //if (turn == -1)
                                        //    if (board.CheckmatePositiveTeam()) boardState = "Chiếu tướng đỏ";
                                        //    else boardState = "";
                                        //else
                                        //    if (board.CheckmateNegativeTeam()) boardState = "Chieu tuong đen";
                                        //    else boardState = "";
                                        turn = turn == -1 ? 1 : -1; //đổi lượt khi di chuyển thành công
                                        Debug.WriteLine(board.Value);
                                    }
                                }
                            }
                        }

                        if (btnUndo.GetRectangle().Contains((int)touches[0].Position.X, (int)touches[0].Position.Y))
                        {
                            if (board.Undo())
                                turn = turn == -1 ? 1 : -1; //đổi lượt
                        }

                    }
                }
            }
            else
            {

                var b = computer.GetNextBoard(board);
                board.Clone(b);
                turn = turn == -1 ? 1 : -1; //đổi lượt
                //Debug.WriteLine(board.GetValue());
            }

            if (turn == -1)
            {
                turnString = "Black's Turn";
            }
            else turnString = "Red's Turn";

            if (board.CheckWinNegativeTeam() || board.CheckWinPositiveTeam())
            {
                boardState = "Hết cờ";
            }
        }
Beispiel #6
0
 /// <summary>
 /// Sao chép 1 quân cờ
 /// </summary>
 /// <param name="piece"></param>
 public void Clone(ChessPiece piece)
 {
     _isDied = piece._isDied;
     _color = piece._color;
     _value = piece._value;
     _point = piece._point;
     _position = piece._position;
 }