我现在正在设计一个更复杂的井字游戏。我想问玩家是否想恢复保存的游戏。如果是,从文本或二进制文件加载游戏状态。有谁知道这是怎么做到的吗?谢谢!
问问题
1193 次
2 回答
1
通常的方法是将有状态对象序列化/反序列化到某个文件。序列化的一个很好的替代方法是使用Google Protocol Buffers。
在您的情况下,我只能看到需要序列化的一件事:游戏板。IMO 这包含足够的信息,以便能够在上次保存的确切时间恢复游戏。
于 2012-04-24T15:02:55.383 回答
0
您需要做的第一件事是制作包含游戏状态的数据列表。这绝对包括;
- 游戏板(哪些位置有“X”,哪些有“0”,哪些是空的)
- 该轮到谁啦?(播放器还是电脑?)
并且可能包括(取决于您的游戏的复杂程度);
- 人工智能难度
- 其他我可能会忘记的事情。
为简单起见,我假设我们只看棋盘和转牌。你应该已经有一个板的结构/类。您可能还拥有游戏“状态”的结构/类(包含棋盘和回合)。现在您只需要一些功能来执行以下操作(每个功能一个);
- 将数据结构转换为二进制(或其他)的函数。
- 将二进制文件写入文件的函数。
- 从文件中读取二进制文件的函数。
- 解释二进制并加载游戏“状态”的函数。
- (可选)允许用户在保存时选择文件的目录/名称的功能(您可以只拥有一个硬编码的目录,然后将游戏保存为当前日期/时间)。
- (可选)询问用户是否要加载已保存游戏的功能。如果是,则提示用户输入目录或提供可能的文件选择列表供用户从硬编码的目录名称中进行选择。
这似乎势不可挡,但从小处着手。在看下一件之前,试着让一件工作。
于 2012-04-24T16:16:04.267 回答