【发布时间】:2019-01-29 07:19:33
【问题描述】:
我正在用 C 语言编写一个简单的游戏引擎,但遇到了一个非常奇怪的问题。
//SANJI
objs[1].animation = 1;
objs[1].pho.h = 52;
objs[1].pho.w = 25;
objs[1].pho.tmp_pos.x = 190;
objs[1].pho.tmp_pos.y = 40;
objs[1].pho.gravity = 1;
objs[1].hp = 10;
printf("%d\n", objs[1].hp);//outputs 0???????
似乎无论我做什么,变量(成员)hp 都拒绝接受分配并返回到0。我尝试用谷歌搜索,但恐怕我无法准确地表达这个问题。
编辑: 这是 OBJ 结构的定义:
struct OBJ{
//animation
char animation;//if true apply animation; experimetnal
MOVIE sprites;
PHYSOBJ pho;
//OBJ_STATE state;
OBJ_STATE states[SEQ_MAX][ST_MAX];
int img;//number of image
int hp;
//control; AI or human
char control;//0 human, otherwise AI
};
printf 和 objs[1].hp = 10 之间也没有代码;我把 printf 放在那里进行测试
【问题讨论】:
-
hp和objs[1].hp是两个不同的东西。看到minimal reproducible example 会有所帮助。 -
至少,请发布您定义“objs”结构的代码。这将告诉我们 hp 是如何定义的,以及它与 obj 的关系。但是最好有一个完整的例子:stackoverflow.com/help/mcve
-
需要看看你是如何定义“objs”的,你确定“%d”是正确的吗?
-
这个完整的示例:ideone.com/DqW1j1 工作正常,因此如果没有您的帮助,我们无法查看或复制代码中的某些内容。
-
@user3629249:
objs[1].animation = 1;很好。此外,C 无法编写单字节整数文字,因此您必须让编译器进行 int 到 char 的转换..
标签: c game-engine allegro