在C++上更改 SetObject 中的变量时出现问题
Issue with changing a variable within a SetObject on C++
我正在使用记事本++为GBA创建一个基本的无尽亚军游戏。我的运行角色由精灵组成,我需要在主游戏循环中以设定的间隔自动更改,但我似乎找不到允许我这样做的方法,我知道下面的代码非常基本,但我认为它的逻辑是合理的,它应该可以工作。我有四个精灵,通过以 2 为间隔更改运行变量来更改它们。提前感谢您的任何帮助。
//main game loop
while (true)
{
const uint8_t currentKeys = REG_KEYINPUT;
frame += 1;
if (frame == 4)
run += 2;
if (frame == 8)
run += 2;
if (frame == 12)
run += 2;
if (frame == 16)
run += 2;
if (frame == 20)
run = 0;
frame = 0;
if (currentKeys != prevKeys )
{
if ((currentKeys & KEY_UP) == 0) //
{
velocityY = -6.0f;
}
}
SetObject(0,
ATTR0_SHAPE(2) | ATTR0_8BPP | ATTR0_REG | ATTR0_Y(20),
ATTR1_SIZE(2) | ATTR1_X(120),
ATTR2_ID8(run));
prevKeys = currentKeys;
Update_Physics();
WaitVSync();
UpdateObjects();
}
正在更改:
if (frame == 20)
run = 0;
frame = 0;
自:
if (frame == 20)
{
run = 0;
frame = 0;
}
足以解决您的问题吗?
这是
一个简单的错误。
您应该了解 if 函数的作用域。请注意下面的代码段。
if (frame == 20)
run = 0;
frame = 0; //this statement is executes always as it is not in above if statements scope.
由于这是在主游戏循环中,因此frame
的值总是对0
有利。但是您的要求是将frame
设置为0
(如果仅frame == 20
)。
为了实现它,请在 if (frame == 20)
的范围内插入 frame = 0;
语句。
if (frame == 20) {
run = 0;
frame = 0;
//scope of if statement
}
IF语句的范围 -
如果只有一个语句,要使用 if 语句执行,您只需使用 if 语句指定该语句即可。
if(condition)
statement;
但是,如果您有多个条件,则可以使用 {
和 }
将所有语句括起来,并将这些语句添加到 if 语句范围。
if(condition) {
statement_1; // scope begind
statement_2;
statement_3;
statement_*;
} // scope ends
相关文章:
- 为"adjacent"变量赋值时出现问题
- C++理解计算字符变量的问题
- 在通知提升间处理条件变量时未按住锁会导致问题
- C++线程安全:如果只有一个线程可以写入非原子变量,但多个线程从中读取. 会遇到问题吗?
- 将十六进制值设置为用于填充的字符变量时出现问题
- 初学者问题:如何访问此变量?
- 关于仅正确使用二传手和变量的问题
- 为什么在分配给成员变量之前获取unique_ptr的返回是一个问题?
- C++ 多线程中的锁和条件变量问题
- C++grpc的一些变量问题
- 我如何加载多个脚本而没有变量问题
- 未初始化的变量问题C++
- C++和引脚工具 - IF语句非常奇怪的双变量问题
- 如何通过引用捕获异常来解决局部变量问题
- sscanf写入变量问题
- 影子变量问题Qt
- C++ 中的局部变量问题
- 跨平台条件变量问题
- Makefile变量问题,make想要创建"*.o"而不是foo.o bar.o等
- c++变量问题