我有以下代码:
bool hasGoneDown = TRUE;
NSLog(@"%d", hasGoneDown);
if(y > 700 && hasGoneDown == TRUE){
[_game addToScore:600];
hasGoneDown = FALSE;
}
if(y < 700){
NSLog(@"we are IN : %d", hasGoneDown);
hasGoneDown = TRUE;
}
但由于某种原因,即使在if语句中设置条件,bool值也不会发生变化,它始终为1!
所以我做错了什么?
更多信息
这里有关于在那里做什么的更多信息。
这是一个游戏,技术上有一个角色跳跃,y
var表示y轴,所以当角色跳跃高于700时,它应该做某些事情...上面的代码被不断调用超出游戏,但是bool的价值并没有全部改变!
答案 0 :(得分:2)
bool hasGoneDown = TRUE;
NSLog(@"%d", hasGoneDown);
if(y > 700 && hasGoneDown == TRUE){
[_game addToScore:600];
hasGoneDown = FALSE;
}
if(y < 700){
NSLog(@"we are IN : %d", hasGoneDown);
hasGoneDown = TRUE;
}
如果整个代码都在一个函数中,那么每当函数运行时将它初始化为true都将是真的。我希望bool hasGoneDown = True
在其他地方被声明为全局变量。你的代码..我相信你的代码更加“整洁”的版本如下:
if(y >= 700 && hasGoneDown == TRUE)
{
[_game addToScore:600];
hasGoneDown = FALSE;
}
else{
NSLog(@"we are IN : %d", hasGoneDown);
hasGoneDown = TRUE;
}
答案 1 :(得分:0)
首先,请勿使用“TRUE”和“FALSE”。使用“是”和“否”。其次,您的逻辑可能有问题。您可能希望使用单个“if / else”语句而不是两个“if”语句。你必须自己评估一下。
if(y > 700 && hasGoneDown == YES){
[_game addToScore:600];
hasGoneDown = NO;
}
if (y < 700){
NSLog(@"we are IN : %d", hasGoneDown);
hasGoneDown = NO;
}