/// <summary> /// 执行悔棋操作 (悔棋到自己的上一步棋子) /// </summary> /// <param name="toOwnPiece">如果为 true, 则悔棋到自己的上一步棋子; 如果为 false, 则悔棋一步.</param> public void RegretPieceMove(bool toOwnPiece) { if (toOwnPiece) { ReversiPiece ownPiece = CurrentPiece; try { while (true) { PopState(); if (ownPiece == CurrentPiece) { break; } } ResetBuffer(); } catch { ResetBuffer(); RegretPiece_Finished(true); } RegretPiece_Finished = null; } else { RegretPieceMove(); } }
/// <summary> /// 执行悔棋操作 (悔棋 regretCount 步) /// </summary> /// <param name="regretCount">悔棋步数</param> public void RegretPieceMove(int regretCount) { if (regretCount > MaxRegretSteps) { throw new Exception("需求的悔棋步数大于实际能悔棋的步数!"); } PopState(regretCount); ResetBuffer(); RegretPiece_Finished = null; }
/// <summary> /// 设置悔棋参数 /// </summary> /// <param name="regretPiece_Finished">悔棋失败时的委托, 通常会要求对方执行一次下棋操作.</param> public void SetRegretPieceArgs(WhenRegretPiece_Finished regretPiece_Finished) { RegretPiece_Finished = regretPiece_Finished; }