小问题我在一个特定时间在屏幕上有大量物体(敌人)并且无法重新定义它们的值。我设置我的敌人从屏幕上的3开始。
我的目标是根据当前分数更改敌人数量。
我附上了以下代码的片段。
#define kEnemies 3
- (void) EnemyIncrease
{
if (self.score>=100) {
#define kEnemies 4
}
}
//我还尝试了其他的事情
#define kEnemies 3
- (void) EnemyIncrease
{
if (self.score >=100) {
#undef kEnemies
#define kEnemies 6
}
}
非常感谢一些帮助。
我现在已将代码更改为以下
int numberOfEnemies;
if (self.score>=0) {
numberOfEnemies = 3
}
else if (self.score>=100) {
numberOfEnemies = 4
}
然而现在的问题是,当分数满足新条件时,阵列不会更新numberOfEnemies。
for(int i = 0; i < numberOfEnemies; i++)
道歉我仍然是编码和尝试修改现有代码的新手
答案 0 :(得分:6)
宏已经过预处理,这意味着它们会在代码的其余部分被编译之前得到处理。
取出你的代码,这意味着预处理器会看到这一点(使用你的第二个例子)。最终,kEnemies
的值为6:
#define kEnemies 3
#undef kEnemies
#define kEnemies 6
将#defines用于变量并不可行,我只将它们用于常量。
您可以使用成员变量:
int numberOfEnemies;
...
if (self.score >=100)
{
numberOfEnemies = 6
}
(我删除了 k 前缀,因为此样式适用于常量)