/// <summary>
 /// 初始化五子棋盘点集,参数为row/clm上有多少个棋盘点,该值必须为奇数,否则自动加1。
 /// Player的初始化也可以放在外面然后传参传进来(但是这样又不好保证外面只new了两个Player)
 /// 或者里面改下Player的代码,使得可以new后配置参数,然后这里先new两个Player,外面来赋值(这种比较好)。
 /// </summary>
 public FiveChessContext(int mapSideLength)
 {
     FiveChessMapSideLength = (mapSideLength / 2) * 2 + 1;              // 确保是奇数
     Players     = new[] { new FiveChessPlayer(_playerColors[0]), new FiveChessPlayer(_playerColors[1]) };
     CurPlayer   = Players[0];
     CursorCoord = new PositiveCoordinate(FiveChessMapSideLength / 2, FiveChessMapSideLength / 2);
     InitMap();
     _fiveChessMap[CursorCoord.RowY][CursorCoord.ClmX].CursorPiece = CursorPieceHelper.GetCursorPiece();
 }
        protected void MoveCursor(ConsoleKey key)
        {
            switch (key)
            {
            case ConsoleKey.UpArrow:                      // 向上
                if (CursorCoord.RowY - 1 >= 0)
                {
                    _fiveChessMap[CursorCoord.RowY - 1][CursorCoord.ClmX].CursorPiece =
                        _fiveChessMap[CursorCoord.RowY][CursorCoord.ClmX].RemoveCursorPiece();
                    CursorCoord = new PositiveCoordinate(CursorCoord.RowY - 1, CursorCoord.ClmX);
                }
                break;

            case ConsoleKey.RightArrow:                      // 向右
                if (CursorCoord.ClmX + 1 <= FiveChessMapSideLength - 1)
                {
                    _fiveChessMap[CursorCoord.RowY][CursorCoord.ClmX + 1].CursorPiece =
                        _fiveChessMap[CursorCoord.RowY][CursorCoord.ClmX].RemoveCursorPiece();
                    CursorCoord = new PositiveCoordinate(CursorCoord.RowY, CursorCoord.ClmX + 1);
                }
                break;

            case ConsoleKey.DownArrow:                      // 向下
                if (CursorCoord.RowY + 1 <= FiveChessMapSideLength - 1)
                {
                    _fiveChessMap[CursorCoord.RowY + 1][CursorCoord.ClmX].CursorPiece =
                        _fiveChessMap[CursorCoord.RowY][CursorCoord.ClmX].RemoveCursorPiece();
                    CursorCoord = new PositiveCoordinate(CursorCoord.RowY + 1, CursorCoord.ClmX);
                }
                break;

            case ConsoleKey.LeftArrow:                      // 向左
                if (CursorCoord.ClmX - 1 >= 0)
                {
                    _fiveChessMap[CursorCoord.RowY][CursorCoord.ClmX - 1].CursorPiece =
                        _fiveChessMap[CursorCoord.RowY][CursorCoord.ClmX].RemoveCursorPiece();
                    CursorCoord = new PositiveCoordinate(CursorCoord.RowY, CursorCoord.ClmX - 1);
                }
                break;
            }
            RefreshMap();
        }
Beispiel #3
0
        }                                             // 由于五子棋棋盘的每个棋盘点的图片/形状都一样,故其实可以由FIVE_CHESS_MAP_POINT_PICTURE代替

        public FiveChessMapPoint(PositiveCoordinate coord)
        {
            Coord           = coord;
            ChessPiece      = null;
            MapPointPicture = FIVE_CHESS_MAP_POINT_PICTURE;
        }