【发布时间】: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