Advertisement

前端框架基于React开发一个井字棋(4)并支持保存游戏历史

阅读量:

以下为最后一个训练环节,我们将通过特定途径达成“回到过去”的效果,使游戏能够回溯至先前的历史操作步骤。

历史记录保存机制

若直接对 square 数组进行修改,将使实现时间旅行的功能变得极为复杂。

然而,我们可以通过 slice() 函数为每一步生成 squares 数组的副本,并将该数组视为不可更改的对象。这样一来,所有 squares 数组的历史状态均可被完整保留,从而允许我们在任意历史步骤之间自由切换。

我们将 squares 数组的历史版本存储于一个名为 history 的数组中。该 history 数组记录了从初始步骤至最终步骤的所有棋盘状态。history 数组的结构如下所示:

复制代码
    history = [
      // 第一步之前
      {
    squares: [
      null, null, null,
      null, null, null,
      null, null, null,
    ]
      },
      // 第一步之后
      {
    squares: [
      null, null, null,
      null, 'X', null,
      null, null, null,
    ]
      },
      // 第二步之后
      {

全部评论 (0)

还没有任何评论哟~