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

マクロは前処理されます。つまり、残りのコードがコンパイルされる前にマクロが処理されます。

コードを取り出すと、プリプロセッサがこれを認識します(2番目の例を使用)。最終的に、の値kEnemiesは6です。

#define kEnemies 3
#undef kEnemies
#define kEnemies 6

変数に#definesを使用することは実際には実行可能ではなく、定数にのみ使用します。

メンバー変数を使用できます。

int numberOfEnemies;

...

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

(このスタイルは定数を対象としているため、 kプレフィックスを削除しました)

于 2012-07-25T11:24:26.400 に答える