-3

我需要一个包含 C++ 中最佳玩家得分的变量。所以我需要一些在程序结束后不会被删除的东西,每次当有人获得更高的分数时,必须用新的变量替换该变量。我知道我可以将该号码保存在 .txt 文件中,但我想知道是否有其他方法?

4

4 回答 4

6

你可以使用类似OpenKeyval的东西。

设置高分将是一个 POST 请求:

$ curl http://api.openkeyval.org/highscore -d "data=1000"

获得高分是一个 GET 请求:

$ curl http://api.openkeyval.org/highscore
1000
于 2013-06-08T19:53:20.947 回答
1

一种替代方法是将其存储在SQLite数据库中。这样,您就可以获得数据库的灵活性,而无需运行或连接到服务器。

于 2013-06-08T20:01:24.270 回答
0

最通用和“便携”的方式是将其存储在文本文件中。当然,这也很容易被滥用,有人可以在记事本中打开文件并将分数从 1234 更改为 999999,或类似的。

存储在二进制文件中会起作用,但对机器架构和变量大小很敏感。

Windows 有一个“注册表”,可用于存储字符串或二进制数据,类似于文件。但是,例如,如果您决定将游戏移至 Linux,显然是行不通的。

如果您想跟踪所有游戏的所有分数,数据库可能是比简单文件更好的解决方案。有一些“本地使用”的数据库,比如 SQLite 或 MySql,你可以在自己的机器上运行(MySql 也会在网络上运行,可以集中到同一网络上的一组机器上,它用于大量基于网络的应用程序)。

您可以建立一个(或使用一些现有的)网站,并使用程序驱动的网络访问来存储和恢复值。或者您可以将文件存储在 FTP 服务器上,这与 Web 访问几乎相同,但配置和设置要“麻烦”一些(并且可能更难以通过某些防火墙)。当然,如果您想获得“世界范围内”的最高分、每个玩家的个人统计数据等,那么基于网络的解决方案可能是正确的选择——但也需要一些安全措施来防止某人从只是伪造分数。

所有选择都有其优点和缺点。哪个是您的最佳选择实际上取决于您对游戏的最终目标是什么。如果只是“让我们在家里做一个俄罗斯方块小游戏给自己和我的朋友玩”的情况,那么将分数保存在文本文件中可能没什么大不了的。如果您正在寻找下一代魔兽世界或类似的游戏,那么基于网络的游戏几乎肯定是唯一的解决方案。

于 2013-06-08T20:29:57.860 回答
0

我可以想到三个主要选项:1.)将其存储在文件中 2.)将其存储在注册表中(http://forum.codecall.net/topic/63205-registry-operations-using-win32- part-1/ ) 3.) 将其存储在可以读取或写入的在线服务器上

于 2013-06-08T19:51:55.670 回答