问题标签 [allegro]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
960 浏览

c++ - 在 Allegro 5 运行时更改基元的颜色

我正在编写一个 2D 对象编辑器,以便我可以更快地为基本程序创建 UI。我根本没有使用任何位图。相反,我只是在游戏循环中使用函数调用绘制原语。到目前为止一切都很好,但我想知道如何在运行时更改对象的颜色。

基本概念是我使用一个变量来表示颜色,当用户调用改变该变量值的函数时,就会改变颜色。简单的。就像是:

不幸的是,这不起作用。当我使用类似的代码时,根本就没有绘制对象。没有编译错误,没有运行时错误,什么都没有。相反,这些对象没有颜色,因此是不可见的,尽管我已经验证它们确实是被创建的。所以我猜这意味着颜色变量在某种程度上是正确的类型,但不保留al_map_rgb()它设置为等于该函数返回的值时的值。我知道它必须返回一些东西,否则它就不能成为函数中的参数al_draw

虽然我可以写出导致不同绘图函数的 if else if 语句,但我宁愿只使用像上面这样的简单代码包,而不是一堆冗余的东西来解决应该简单的问题。我只是不想使用相当于胶带的代码。

所以我确信这个问题可能与我al_map_rgb()返回值的假设有关ALLEGRO_COLOR,但我不知道。你们愿意提出一些建议吗?

0 投票
2 回答
4138 浏览

c++ - 使用 Allegro 5 加载 .png 图像文件

我正在用 allegro 编写游戏,并想加载一些图像文件。但是,每当我调用 al_load_bitmap 时,都会得到一个空指针。我使用 XCode 4.1 作为我的 IDE。我会尝试使用 g++ 进行编译(以防它是路径问题)但是我不知道我需要做什么才能在命令行中使用 g++ 编译它(只是 g++ main.cpp 不起作用)。无论如何,这是我的代码:

我已经跑了:

我还提出:

在我文件的顶部。既不加载grass.png,也不加载dirty.png,它们与我的main.cpp 文件位于完全相同的目录中。我没有编译错误,但是当我尝试加载我的图像时,我总是得到空指针,所以当需要将它们绘制到显示器时,它们不会显示。请帮忙!

0 投票
1 回答
633 浏览

c - 如何分配和重用 Haskell 中的 C 结构?

特别是,我正在尝试通过编写与 Allegro 游戏库的绑定来学习 Haskell 的外部函数接口。在 Allegro 的原生 C 中,主事件循环如下所示:

使用 ghc 和 hsc2hs,我可以编写一个外部函数调用,例如:

whereEventQueue是指向不透明结构的指针,并且EventStorable基于 C 的实例ALLEGRO_EVENT

理想情况下,对于面向用户的 Haskell 函数,我希望有一个类型签名,例如

这将抽象出初始化ALLEGRO_EVENT结构和布尔返回值。

我的问题是,我应该如何编写这个函数来最大化内存效率?我可以Event在方法内部分配一个新指针并使用它,但由于我正在处理基于 C 的数据,我想确保我正在重新使用现有空间而不是不断分配新结构。我还想避免让用户 malloc 结构并将其传递给每个调用。

有什么建议吗?

0 投票
1 回答
187 浏览

png - 如何在我的游戏中制作非矩形图像?

不要问问题,但基本上我的游戏有很多鼠标光标追逐玩家的光标。

我有一个黑色背景的小光标图像,我一直在使用它,但问题是它根本不是光标的形状。有微小的角落,当多个光标重叠时,它们会被.png背景的黑色部分部分隐藏。

如何剪切光标图像并具有实际的光标形状,从而实现更准确的视觉重叠和更准确的碰撞?

0 投票
2 回答
3427 浏览

visual-studio - 如何将项目包装成单个 .exe?

我在 Visual Studio 中制作了 Allegro 游戏。它非常小。

但是我怎样才能得到一个完成的.exe?当我从项目的调试文件夹中复制 .exe 并尝试运行它时,它基本上说“抱歉 Allegro dll 都丢失了!安装它们并重试”,因为我已将其从其资源中删除。

如何将它捆绑在一起,以便将所需的所有内容打包到 .exe 中?

0 投票
3 回答
8711 浏览

c++ - Cpp中的私有静态数据成员..只能在其定义处初始化,但类内初始化无效?

在头文件中初始化我得到以下错误:

如果我尝试在 .cpp 中初始化,我得到:

继承人的标题:

0 投票
2 回答
275 浏览

c++ - 如何使用需要指向 C++ 中的 void 函数的指针的 Functor 调用 C 函数?

我想包装(Facade Pattern)Allegro 对线程的使用,即我install_int_ex(void (__cdecl*)(void), int tick);编写remove_int(void (__cdecl*)(void))的​​一个使用模板user-defined Functor Objects的类,并在创建和销毁类时安装中断和删除中断。

我不断收到编译器错误:error C2664: 'install_int_ex' : cannot convert parameter 1 from 'void (__thiscall [User-defined FunctorName Here]::* )(void)' to 'void (__cdecl *)(void)'和类似的remove_int(void (__cdecl*)(void))

如果被调用的函数接受指向用户数据的指针,这似乎可行void*

不幸的是,Allegro 没有这么灵活。有没有办法绕过这个限制,或者我将不得不使用 Windows CreateThread(并在这个过程中学习线程“真正的方式”)?

另请参阅:使用 C++ 成员函数作为线程的入口点函数

0 投票
0 回答
206 浏览

c++ - 使用 allegro5 在 Xcode 上创建 c++ 项目

我最近尝试使用 allegro5 在 Xcode 上创建一个 c++ 项目。我创建一个 c++ 项目没有问题,但是在尝试使用 allegro 时遇到了一些困难。

我按照以下教程安装并绑定 allegro 到 Xcode: http ://wiki.allegro.cc/index.php?title=OSX,_Xcode_4,_Framework

这里的第一个问题是本教程没有使用 c++ 项目,而是使用 cocoa 应用程序。但是,我仍然按照步骤进行操作,最后,当我尝试构建时,Xcode 返回以下错误:'allegro5/allegro.h' 文件未找到

我一直试图在谷歌上寻找任何帮助,但没有成功。

如果有人可以帮助我,那就太好了。

谢谢

0 投票
2 回答
2265 浏览

c++ - 将 Qt Creator 与 Allegro 一起使用

我想让 Allegro 4 (MSCV 9) 与 Qt Creator 一起工作。我正在使用 Windows XP。我已将这些行添加到我的 .pro 中:

我的代码如下所示:

当我尝试编译时,我不断收到这样的错误:

main.obj:-1:错误:LNK2019:函数“int __cdecl _manangled_main(void)”(?_manangled_main@@YAHXZ)中引用的未解析的外部符号imp__allegro_exit main.obj:-1:错误:LNK2019:未解析的外部符号_imp _set_close_button_callback在函数“int __cdecl _mangled_main(void)”(?_mangled_main@@YAHXZ) main.obj:-1 中引用:错误:LNK2019:未解析的外部符号_imp _set_window_title在函数“int __cdecl _mangled_main(void)”(?_mangled_main@ @YAHXZ)main.obj:-1:错误:LNK2019:函数“int __cdecl _mangled_main(void)”(?_mangled_main@@YAHXZ)中引用的未解析的外部符号_imp_set_gfx_mode main.obj:-1:错误:LNK2019:未解决外部符号_imp_set_color_depth 在函数“int __cdecl _mangled_main(void)”(?_mangled_main@@YAHXZ) main.obj:-1: error: LNK2019: unresolved external symbol __imp _install_allegro_version_check 在函数“int __cdecl _mangled_main(void)”(?_mangled_main@ @YAHXZ)

0 投票
2 回答
563 浏览

allegro - 有没有办法在 Allegro 4.2 中通过 x 和 y 移动形状?

我是 allegro 的新手,所以这可能是一个简单的问题。

我想知道是否有一种方法可以将快板形状移动 x,y 而不用填充我用黑色圆圈制作的圆圈并制作一个新圆圈。

目前我有一个while循环,通过移动用黑色圆圈填充当前圆圈并用x和y制作一个新的圆圈来移动圆圈,这有点不同我想知道是否有办法移动快板形状x,y 因为它似乎让我的游戏变慢了。

这是当前使用这种方式的时间:

谢谢