2

小问题我在某个特定时间在屏幕上有大量对象(敌人)并且无法重新定义它们的值。我将我的敌人设置为从屏幕上的 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++)

抱歉,我对编码和尝试修改现有代码仍然很陌生

4

1 回答 1

6

宏是预处理的,这意味着它们甚至在你的其余代码编译之前就被处理了。

取出您的代码,这意味着预处理器会看到这一点(使用您的第二个示例)。最终,值为kEnemies6:

#define kEnemies 3
#undef kEnemies
#define kEnemies 6

将#defines 用于变量并不可行,我只将它们用于常量。

您可以使用成员变量:

int numberOfEnemies;

...

if (self.score >=100) 
{
    numberOfEnemies = 6
}

(我删除了k前缀,因为这种样式适用于常量)

于 2012-07-25T11:24:26.400 回答