/// <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(); }
} // 由于五子棋棋盘的每个棋盘点的图片/形状都一样,故其实可以由FIVE_CHESS_MAP_POINT_PICTURE代替 public FiveChessMapPoint(PositiveCoordinate coord) { Coord = coord; ChessPiece = null; MapPointPicture = FIVE_CHESS_MAP_POINT_PICTURE; }