Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当我使用C+设计Tic-Tac-Toe时,如何恢复已保存的游戏+;?_C++ - Fatal编程技术网

C++ 当我使用C+设计Tic-Tac-Toe时,如何恢复已保存的游戏+;?

C++ 当我使用C+设计Tic-Tac-Toe时,如何恢复已保存的游戏+;?,c++,C++,我现在正在设计一个更复杂的井字游戏。我想问玩家是否愿意恢复一个保存的游戏。如果是,则从文本或二进制文件加载游戏状态。有人知道怎么做吗?谢谢大家! 通常的方法是将有状态对象序列化/反序列化到某个文件。序列化的一个很好的替代方法是使用 在你的例子中,我只能看到一件需要序列化的东西:游戏板。在我看来,这包含了足够的信息,可以在上次保存的确切位置恢复游戏。您需要做的第一件事是列出包含游戏状态的数据列表。这当然包括, 游戏板(哪些位置有“X”,哪些位置有“0”,哪些位置是空的) 轮到谁了?(播放器还是电

我现在正在设计一个更复杂的井字游戏。我想问玩家是否愿意恢复一个保存的游戏。如果是,则从文本或二进制文件加载游戏状态。有人知道怎么做吗?谢谢大家!

通常的方法是将有状态对象序列化/反序列化到某个文件。序列化的一个很好的替代方法是使用


在你的例子中,我只能看到一件需要序列化的东西:游戏板。在我看来,这包含了足够的信息,可以在上次保存的确切位置恢复游戏。

您需要做的第一件事是列出包含游戏状态的数据列表。这当然包括,

  • 游戏板(哪些位置有“X”,哪些位置有“0”,哪些位置是空的)
  • 轮到谁了?(播放器还是电脑?)
可能包括(取决于游戏的复杂程度)

  • 人工智能难度
  • 其他我可能会忘记的事情
为了简单起见,我假设我们只看棋盘,然后转身。 您应该已经有了该板的结构/类。你也可以有一个游戏“状态”的结构/类(包含棋盘和回合)。 现在,您只需要一些函数来执行以下操作(每个函数一个)

  • 将数据结构转换为二进制(或其他形式)的函数
  • 将二进制文件写入文件的函数
  • 从文件中读取二进制文件的函数
  • 解释二进制文件并加载游戏“状态”的函数
  • (可选)功能,允许用户在保存时选择文件的目录/名称(您可以使用硬编码目录,然后将游戏另存为当前日期/时间)
  • (可选)询问用户是否要加载已保存游戏的功能。如果是,则提示用户输入目录,或提供可能的文件选择列表,供用户从硬编码目录名中选择

这看起来很难,但从小事做起。在看下一件之前,试着让一件工作起来。

请扩展您的问题,让我们知道您迄今为止尝试了什么?如何做什么?您需要在您的程序中为状态提供一个表示。如果您使用3x3网格执行直接的tic-tac-toe实现,说明网格的每个位置都有什么,那么它可能完全基于文本