【问题标题】:Allegro 5 ALLEGRO_BITMAP to text fileAllegro 5 ALLEGRO_BITMAP 到文本文件
【发布时间】:2015-08-04 09:39:41
【问题描述】:

我目前正在使用 Allegro 5 作为我的图形库,使用 C++ 编写视频游戏项目。我将图形和字体资源存储在 .exe 根文件夹内的子文件夹中。为了在程序中使用它们,我有一个 initGraphics() 函数,它通过 al_load_bitmap() 加载所有需要的资产,然后使用 al_destroy_bitmap() 释放内存。然而,这意味着当我最终分发我的游戏时,任何人都可以非常轻松地进入安装文件夹并将图形编辑为任何内容,而我无法找到有关如何防止这种情况的任何帮助. 我在想的可能是我在分发之前在自己的计算机上运行的某种程序,它会加载适当的图形资产,并以某种方式将它们转换为 .txt 文件,然后更改主游戏可执行文件的“initGraphics()”函数加载和使用这些,而不仅仅是原始 .png 文件,但我不确定这是否可能。任何有关此类转换的信息都将不胜感激,或者是一种更可靠的测试方法,可以达到相同的效果。非常感谢您!

【问题讨论】:

  • 您可以将文件的扩展名更改为 *.txt 并检查 ex。 _DEBUG 宏。因此,如果它设置从带有 *.png 的文件读取,则从 *.txt 读取。不过我会推荐某种 zip 库,然后将您的资产存档并使用密码保护。
  • 感谢您的想法。如果我将文件更改为 .txt,我会在尝试加载文件时遇到断言失败。是否需要采取一些额外的步骤才能使这成为可能?
  • 如果您只更改了扩展名,我相信如果您也更改了代码,它应该会有所不同。但是,请确保您确实更改了扩展名,而不仅仅是名称(Windows 中的可见文件扩展名设置)。你也可以把你的错误贴出来,我有空再考虑。
  • 我刚刚检查了 al_load_bitmap() 的文档,上面写着 Loads an image file into an ALLEGRO_BITMAP. The file type is determined by the extension.。它可能会导致您的 assertion_error。检查您是否可以在函数调用期间强制扩展,或者只是以某种方式对扩展进行编码并在应用运行时替换。

标签: c++ text graphics bitmap allegro


【解决方案1】:

在研究互联网时,我发现了有趣的解决方案:

Allegro5 使用 PhysicsFS 库来处理文件存档。它不支持受密码保护的存档,但您可以为您的资产存档计算 md5 并将其硬编码到您的程序中,然后在运行时进行比较 (source - see more here)

参见this Allegro5 文档的一部分。

md5实现示例说明here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多