110,539
社区成员
发帖
与我相关
我的任务
分享
public class 棋谱
{
public 棋子 q; //枚举值,例如 棋子.红车1
public 位置 起点; //例如 E8
public 位置 终点; //例如 E5
pubic 棋谱 前一步;
}
可见,棋谱是一个“链表结构”,并且以最后一步作为棋谱。当新增加一个步骤时,就创建一个新的棋谱做最新的棋谱,并且把之前的棋谱赋值给新的棋谱对象的“前一步”属性。
这样也就知道了如何悔棋。只要把当前棋谱的相应棋子放回起点,并且将其“前一步”属性重新恢复为当前棋谱。