带有二进制文件的运动场

Playfield with binary file

我正在编写一个棋盘游戏,我必须制作一个名为 "write" 的二进制文件,该文件始终写入当前游戏区域。它包含活动玩家、最大和最小 x/y 坐标等信息。没有标记的字段应该具有零值。必须这样做,这样程序才能更容易地自动测试。

我考虑过制作一个名为 CurrentField 的 class ,每次转完后我都将其写入我的二进制文件中,但我不确定如何确保将所有内容都写入需要的位置是(我们必须声明一个特定的 header 并且某些东西应该在某个偏移量中)。

对此有什么想法吗?好主意,还是有更好的方法来做到这一点?

编辑:有没有人知道一种方法来测试真正写入二进制文件的内容? Edit2:它必须用 C++ 标准库来解决。 性能并不那么重要,因为它不会是一个大文件。只有在输入命令时才写入的想法是好的。

至少有两个不错的库可以帮助您。

  1. Boost Serialization是为了序列化一些任意结构而设计的。它包括一些很好的概念,如版本控制(您可以选择在游戏更新中更改存储的数据并保持以前的游戏状态不变)和 archives(如果您想更改文件格式怎么办全部?

  2. Boost Spirit 旨在以极快的速度解析和序列化任何文本和二进制协议。它工作得更快。

  3. 您可以通过 file-memory mapping 将内存位置存储在文件中来解决任何问题。不过要小心指针。

检查您是否真的需要在每一步都执行此操作,因为文件系统调用非常慢。至少,异步执行(查找 Boost Asio)。